我想在驱动器中创建一个目录(如果该目录尚不存在)。
function CreateDirectory() {
var folderName="Example";
var Directory;
var fi = DriveApp.getFoldersByName(folderName);
if (fi.hasNext()) {
Directory = fi.next();
} else {
Directory = DriveApp.createFolder(folderName);
}
}
当达到条件时该函数停止:
抱歉,服务器发生错误。请稍等一下,然后重试。
问题是什么?如何解决?
你的代码没有任何问题。
Google 无法保证 100% 的服务可用性。
解释:
该错误告诉您需要wait在再次执行该函数之前稍等一下。
有潜力解决方法解决方案是使用试着抓 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/try...catch声明并在catch
括号中包含自动执行函数的代码一段时间后.
例如,您可以创建一个时间驱动的 https://developers.google.com/apps-script/guides/triggers/installable trigger执行的CreateDirectory()
一段时间后(例如 1 分钟)如果函数failed第一次。
解决方案:
在以下解决方案中,逻辑是手动执行toRun()
功能。后者将尝试执行CreateDirectory()
。如果发生错误,它将创建一个时间驱动的触发器来执行CreateDirectory()
一分钟后(根据您的需要修改)。这clearTrigger()
函数负责清除由于该代码而创建的所有先前触发器(如果有)。
function toRun(){
try{
CreateDirectory();
}
catch (e){
clearTrigger(); // clear previous created triggers
ScriptApp.newTrigger("CreateDirectory")
.timeBased()
.after(1 * 60 * 1000) // execute CreateDirectory after 1 minute
.create();
}
}
function CreateDirectory() {
var folderName="Example";
var Directory;
var fi = DriveApp.getFoldersByName(folderName);
if (fi.hasNext()) {
Directory = fi.next();
} else {
Directory = DriveApp.createFolder(folderName);
}
}
function clearTrigger(){
var triggers = ScriptApp.getProjectTriggers();
for (var i = 0; i < triggers.length; i++) {
if (triggers[i].getHandlerFunction() == "CreateDirectory") {
ScriptApp.deleteTrigger(triggers[i]);
}
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)