Apps Script公式リファレンス: Apps Script Reference |障害・課題追跡: IssueTracker |Google Workspace: Status Dashboard - Summary

2019年5月2日木曜日

HtmlServiceのテキストエリアからGoogleドキュメントに書き込みたい


この記事でやること

GoogleドキュメントのテキストをHtmlServiceのテキストエリアに読み込みたい
でテキストエリアに読み込んだあとで

編集したテキストをドキュメントに反映させるところまで行きます。



コード.gs
function doGet(e) {
  return HtmlService.createHtmlOutputFromFile("index");
}

var docUrl = 'https://docs.google.com/document/d/ID/edit';
var docId = docUrl.split('/d/')[1].split('/')[0];

function getDocText() {
  var doc = DocumentApp.openById(docId);
  var body = doc.getBody().getText();
  return body;
}

function updateDocText(text) {
  var doc = DocumentApp.openById(docId);
  var body = doc.getBody();
  body.setText(text);
}




index.html
<!DOCTYPE html>
<html>
<body>
  <textarea id="ta" style="width: 20vw;height:90vh;"></textarea>
<script>
getData();

/************************************
elem(id)
************************************/
function elem(id) {
  return document.getElementById(id);
}

/************************************
getData()
************************************/
function getData() {
  google.script.run
  .withFailureHandler(onFailure)
  .withSuccessHandler(gotDocText)
  .getDocText();
}

/************************************
gotDocText(result)
************************************/
function gotDocText(result) {
  elem('ta').value = result;
}

/************************************
updateData()
************************************/
function updateData() {
  var text = elem('ta').value;
  google.script.run
  .withFailureHandler(onFailure)
  .updateDocText(text);
}


/************************************
onFailure(e)
************************************/
function onFailure(e) {
  alert([e.message, e.stack]);
}

/************************************
timeout
2秒後にupdateData()を実行する
************************************/
var timeOut;
var milisec = 2000;

document.addEventListener("load", timeoutStart);
document.addEventListener("click", resetTimeout);
document.addEventListener("mousemove", resetTimeout);
document.addEventListener("keypress", resetTimeout);

function timeoutStart(){
  timeOut = setTimeout('updateData()', milisec);
}

function resetTimeout() {
  clearTimeout(timeOut);
  timeoutStart();
}

</script>
</body>
</html>



Latest post

Google Apps Scriptの障害時はIssueTrackerを見てみる - Incidents for Apps Script are reported on Issue Tracker

IssueTracker > Apps Script issues https://issuetracker.google.com/savedsearches/566234 Google Apps Scriptの障害時は IssueTracker に課題が上がっていることが...