Google apps script 通过追加修改文件:更改不会显示在我电脑上的google drive文件夹中
使用以下脚本在文件中创建/追加行。在GoogleOnline环境中运行良好,我可以查看文件并查看如何添加行。但是,通过我电脑上的谷歌硬盘文件夹查看文件时,我只看到了第一行(在创建过程中写入的那一行)。其他人只有在我的电脑上关闭并重新启动google drive后才会出现(等待2小时)。那么,我可以在脚本中做什么来“刷新”以查看电脑上的更改呢Google apps script 通过追加修改文件:更改不会显示在我电脑上的google drive文件夹中,google-apps-script,google-drive-api,Google Apps Script,Google Drive Api,使用以下脚本在文件中创建/追加行。在GoogleOnline环境中运行良好,我可以查看文件并查看如何添加行。但是,通过我电脑上的谷歌硬盘文件夹查看文件时,我只看到了第一行(在创建过程中写入的那一行)。其他人只有在我的电脑上关闭并重新启动google drive后才会出现(等待2小时)。那么,我可以在脚本中做什么来“刷新”以查看电脑上的更改呢 function appendFile (textArea) { // run by timer var d=new Date(); var id;
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());
}
}
}
我也有过类似的问题,但方向相反。(我正在更新电脑上的一个文件,将其复制到驱动器,并希望它与云同步,以便应用程序脚本可以在其上工作。)我发现我必须删除并重新创建该文件才能使其同步。同样的方法在这里似乎也适用 我已经注释掉了代码的Ui部分,用日志记录来观察操作,并将其修改为垃圾文件,然后在每次更新时重新创建文本文件。丑陋,但有效-电脑的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是浪费时间,因为每次运行都会更改它
- 出于同样的原因,您不能依赖于监视文本文件
- 我也遇到过类似的问题,但方向相反。(我正在更新电脑上的一个文件,将其复制到驱动器,并希望它与云同步,以便应用程序脚本可以在其上工作。)我发现我必须删除并重新创建该文件才能使其同步。同样的方法在这里似乎也适用
我已经注释掉了代码的Ui部分,用日志记录来观察操作,并将其修改为垃圾文件,然后在每次更新时重新创建文本文件。丑陋,但有效-电脑的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是浪费时间,因为每次运行都会更改它
- 出于同样的原因,您不能依赖于监视文本文件
append()
的编辑。我需要重新加载文件。这支持您的理论,即append()
中缺少某些触发器。append()
方法的文档说明:“此方法仅适用于谷歌应用程序帐户。”我没有使用谷歌应用程序帐户,但我可以使用append()
。。。也许在一个“正常”的谷歌账户中,它就不能正常工作?这可能是你的问题吗,pbhd?不,我有一个谷歌应用程序帐户。但是,我放弃了使用append,因为它真的很慢。我每秒得到不到10个附件,所以对于我来说,电子表格是一个更好的方法。因为你在网上看到了这些变化,所以脚本很可能工作得很好。您应该检查您电脑上的Google Drive应用程序是否进行同步。它在运行吗?你能在任务栏上看到它吗?它被防火墙阻止了吗?是否设置为使用您的帐户?我的电脑上的“同步>谷歌驱动器”列表中是否排除了该文件夹。此外,该脚本创建的文件显示速度非常快,但内容不会改变。我认为append函数不会在内部触发一些更改标志,这将导致pc上的google drive更新。。。我正在尝试您的脚本,我注意到在线文档没有实时显示来自append()
的编辑。我需要重新加载文件。这支持您的理论,即append()
中缺少某些触发器。append()
方法的文档说明:“此方法仅适用于谷歌应用程序帐户。”我没有使用谷歌应用程序帐户,但我可以使用append()
。。。也许在一个“正常”的谷歌账户中,它就不能正常工作?这可能是你的问题吗,pbhd?不,我有一个谷歌应用程序帐户。但是,我放弃了使用append,因为它真的很慢。我每秒得到的附件不到10个,因此电子表格是一种更好的方法。是的,我也尝试过类似的方法,创建过程中的文件内容会立即同步到pc。但是每次更改时都要重写文件吗?我想将其用于日志记录目的,但在用于大型文件时,这是不可行的。我同意,我不认为这种方法可以长期用于日志记录目的。为什么不使用记录器?尽管有文档表明,它“在从UiApp事件执行或脚本作为服务发布时不起作用”,但该功能已被禁用。也可以考虑MyByTy1024,虽然它不会以一种可以读取离线的方式同步到PC。是的,我也尝试过类似的东西,并且在创建过程中的文件内容立即与PC同步。但是每次发生变化,都会重写文件。我想将其用于日志记录目的,但在用于大型文件时,这是不可行的。我同意,我不认为这种方法可以长期用于日志记录目的。为什么不使用记录器?尽管有文档表明,它“在从UiApp事件执行或脚本作为服务发布时不起作用”,但该功能已被禁用。也可以考虑MeByTy1024,但它不会同步到PC上的方式,你可以离线阅读。