通过追加修改的文件:更改不会显示在我的电脑上的谷歌驱动器文件夹中

时间:2012-11-23 13:40:51

标签: google-apps-script google-drive-api

使用以下脚本创建/追加文件的行。在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());
    }
  }
}

1 个答案:

答案 0 :(得分:1)

我遇到了类似的问题,但方向相反。 (我正在更新我的PC上的文件,将其复制到云端硬盘,并期望它同步到云端,因此应用程序脚本可以在其上工作。)我发现我必须删除并重新创建文件才能将其转换为同步。同样的方法似乎在这里起作用。

我已注释掉代码的Ui部分,替换日志以观察操作,并将其修改为 trash,然后在每次更新后重新创建文本文件 。丑陋但有效 - 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是浪费时间,因为它在每次运行时都会被更改。
  • 出于同样的原因,您无法依赖监控文本文件。