Google apps script 谷歌应用程序脚本函数appenParagraph不';t追加到文档末尾

Google apps script 谷歌应用程序脚本函数appenParagraph不';t追加到文档末尾,google-apps-script,Google Apps Script,我有这段代码,我想知道如何在最近打开的文档末尾添加段落: function foo() { var doc = DocumentApp.getActiveDocument(); var doc_id = doc.getId(); var body = doc.getBody(); body.appendParagraph('1'); body.appendParagraph('2'); doc.saveAndClose(); doc = DocumentApp.o

我有这段代码,我想知道如何在最近打开的文档末尾添加段落:

function foo()
{
  var doc = DocumentApp.getActiveDocument();
  var doc_id = doc.getId();
  var body = doc.getBody();

  body.appendParagraph('1');
  body.appendParagraph('2');

  doc.saveAndClose();
  doc = DocumentApp.openById(doc_id);
  body = doc.getBody();

  body.appendParagraph('3');
}
我原以为结果是“123”,但结果是“3112”

我一直在玩setCursor,但没有成功


提前感谢

在谷歌脚本中,函数只有在返回时才真正写入。函数的每一部分都只是一个承诺,即在某个时刻以大致相同的顺序完成所有工作。我怀疑这一段是否是问题所在。我认为是doc.saveAndClose()导致了错误。如果可以这样做,明智的做法是将此函数的每个部分都作为单独的函数,在onSuccess()上调用

因此,当您调用foo()时:

然后:


真有趣。我添加了
body.getNumChildren()
,而不是nubbers,看起来文档没有时间创建新的子对象。这是对真实问题的非常简化的描述。我不得不将一个非常大的脚本拆分为许多AppendPagement调用,这是因为Google出现了一个错误,即存在许多保存挂起的操作,建议我定期调用saveAndClose()和openByID()。我将尝试将大函数拆分为小函数,并按照您的指示将调用链接到它们(我将在我的假期回来时这样做)。
google.script.run
    .withSuccessHandler( function() { google.script.run.bar() })
.foo();
function foo() {
    append 1 & 2
}

function bar() {
    append 3
}