1

使用以下脚本在文件中创建/附加行。在 Google-Online-Environment 中运行良好,我可以查看文件并查看如何附加行。但是,通过我的电脑上的 Google Drive-Folder 查看文件只给了我第一行(在创建期间编写的那个)。其他人只在我的电脑上关闭并重新启动谷歌驱动器后才出现(等待 2 小时)。那么我可以在我的脚本中做什么来做某种“刷新”来查看我的电脑上的变化?

function appendFile (textArea) { // run by timer
  var d=new Date();
  var id;
  if ((id=ScriptProperties.getProperty ("fileId"))==null) {
    var f=DocsList.createFile("List", "Started at "+d+"\n");
    ScriptProperties.setProperty ("fileId", f.getId());
  }
  else {
    var f=DocsList.getFileById(id);
    f.append("Appended "+d+"\n");
    if (textArea!=undefined) {
      textArea.setText ("id="+id+"\n"+"name="+f.getName()+"\n"+"date="+d+"\nContents="+f.getContentAsString());
    }
  }
}
4

1 回答 1

1

我也遇到过类似的问题,但方向相反。(我正在更新我 PC 上的文件,将其复制到云端硬盘,并希望它同步到云端,以便应用程序脚本可以在其上运行。)我发现我必须删除并重新创建文件才能将其保存到同步。同样的方法在这里似乎也适用。

我已经注释掉了代码的 Ui 部分,替换了日志记录来观察操作,并将其修改为垃圾,然后在每次更新时重新创建文本文件。丑陋但有效 - PC 的 GDrive 上的文件会立即更新。

function appendFile (/*textArea*/) { // run by timer
  var d=new Date();
  var id;
  if ((id=ScriptProperties.getProperty ("fileId"))==null) {
    var f=DocsList.createFile("List", "Started at "+d+"\n");
    ScriptProperties.setProperty ("fileId", f.getId());
  }
  else {
    var f=DocsList.getFileById(id);
    var text = String.concat(f.getContentAsString(),
               "Appended "+d+"\n");
    f.setTrashed(true);
    f=DocsList.createFile("List",text);
    ScriptProperties.setProperty ("fileId", f.getId());
//    if (textArea!=undefined) {
//      textArea.setText ("id="+id+"\n"+"name="+f.getName()+"\n"+"date="+d+"\nContents="+f.getContentAsString());
//    }
    Logger.log("id="+id+"\n"+"name="+f.getName()+"\n"+"date="+d+"\nContents="+f.getContentAsString());
  }
}

剩下的问题:

  • 记住文件的 id 是浪费时间,因为它在每次运行时都会改变。
  • 出于同样的原因,您不能依赖监视文本文件。
于 2012-12-22T16:18:27.597 回答