"We're sorry, a server error occurred. Please wait a bit and try again." 使用 DriveApp 时
"We're sorry, a server error occurred. Please wait a bit and try again." when using DriveApp
我们有一个 Apps 脚本应用程序,它由 Google 表单的“表单提交”事件触发。我们获取表单中收集的信息,并在复制预定义的 Google 文档模板后,将表单数据写入新创建的 Google 文档。在大多数情况下 - 这是有效的,但是有几天(比如今天)很多
"We're sorry, a server error occurred. Please wait a bit and try again."
抛出错误。它被抛出的代码行是:
var copy = template.makeCopy(title);
Utilities.sleep(4000);
return copy;
我相信我遵循了最佳实践,但使用了 Utilities.sleep()
函数,但它似乎没有帮助。仅今天一天,我就看到此错误出现至少 15 次!令人沮丧的是,这并不一致。如前所述,该应用程序可以 运行 几天没有错误,然后在其他日子里我会遇到一堆这样的错误。
我在 2014 年 2 月看到一个 issue 登录,我加了星标,但似乎没有任何解决办法。
任何人都可以指出我可以做些什么来停止看到该错误的正确方向吗?
看起来您正在使用 DriveApp
制作副本。那挺好的。而不是使用:
return copy;
我会获取新文件的 ID,然后使用该 ID 打开文件。然后去掉Utilities.sleep()
。将ID放入全局对象:
函数一:
//declared OUTSIDE of any function, so it's global
var objProjectInfo = {};
function fncOne() {
var copy = template.makeCopy(title);
var theCopyId = copy.getId();
objProjectInfo['copyId'] = theCopyId;
}
函数二:
function fncTwo() {
//Open the new file by ID
var theIdToUse = objProjectInfo['copyId'];
var theNewCopy = DriveApp.getFileById(theIdToUse);
//Write data to new copy
.... code ....
};
这摆脱了 Utilities.sleep()
;它在使用之前显式打开新文件,因此此时不存在它是否存在的问题;它避免使用 return
语句传递数据。
我们有一个 Apps 脚本应用程序,它由 Google 表单的“表单提交”事件触发。我们获取表单中收集的信息,并在复制预定义的 Google 文档模板后,将表单数据写入新创建的 Google 文档。在大多数情况下 - 这是有效的,但是有几天(比如今天)很多
"We're sorry, a server error occurred. Please wait a bit and try again."
抛出错误。它被抛出的代码行是:
var copy = template.makeCopy(title);
Utilities.sleep(4000);
return copy;
我相信我遵循了最佳实践,但使用了 Utilities.sleep()
函数,但它似乎没有帮助。仅今天一天,我就看到此错误出现至少 15 次!令人沮丧的是,这并不一致。如前所述,该应用程序可以 运行 几天没有错误,然后在其他日子里我会遇到一堆这样的错误。
我在 2014 年 2 月看到一个 issue 登录,我加了星标,但似乎没有任何解决办法。
任何人都可以指出我可以做些什么来停止看到该错误的正确方向吗?
看起来您正在使用 DriveApp
制作副本。那挺好的。而不是使用:
return copy;
我会获取新文件的 ID,然后使用该 ID 打开文件。然后去掉Utilities.sleep()
。将ID放入全局对象:
函数一:
//declared OUTSIDE of any function, so it's global
var objProjectInfo = {};
function fncOne() {
var copy = template.makeCopy(title);
var theCopyId = copy.getId();
objProjectInfo['copyId'] = theCopyId;
}
函数二:
function fncTwo() {
//Open the new file by ID
var theIdToUse = objProjectInfo['copyId'];
var theNewCopy = DriveApp.getFileById(theIdToUse);
//Write data to new copy
.... code ....
};
这摆脱了 Utilities.sleep()
;它在使用之前显式打开新文件,因此此时不存在它是否存在的问题;它避免使用 return
语句传递数据。