我昨晚运行了一个脚本并检查了执行脚本窗口,该脚本已经运行。后来我运行了另一个脚本并查看了执行脚本窗口,它显示了之前运行的脚本的脚本。我使用的是 Chrome 版本 19.0.1084.52。我再次尝试使用最新版本的 Firefox 版本 18.0.2 并得到相同的结果。
今天早上我决定清除 Chrome 中的缓存和 cookie,然后再试一次。当我加载 Chrome 时,它表明将我的数据(浏览器历史记录、书签等)与我的 Google 帐户同步时出现了“同步”问题。我禁用了同步,清除了缓存和 cookie,然后退出了 Chrome。我重新加载了 Chrome,登录并打开了我的脚本项目。出于好奇,我查看了执行记录窗口,它仍然有我昨晚成功运行的脚本的记录。当一个人运行一个新的脚本或退出时,记录/日志窗口肯定应该被清除吗?
说明/场景
我有一个 GAS 脚本项目,其中包含几个脚本文件 Code.gs、Test.gs、RemoveLabels.gs、CreateLabels.gs。我想在名为 CreateLabels.gs 的脚本中放入 try...catch 块。它将在 Gmail 中创建新标签。我创建了一个名为 ErrorTest.gs 的新脚本文件,因此我可以尝试 Mozilla 开发人员网络 Javascript 参考文档中的一个示例以引发错误 - throw - JavaScript | MDN。
我将页面“抛出对象”下的示例(它测试无效的月份编号)复制到我的新脚本文件中,它按预期工作。
在我的脚本文件 CreateLabels.gs 中,我输入了以下代码:
function UserException(message) {
this.message = message;
this.name = "UserException";
};
在我想抛出错误的函数中,我有:
function getDayTable() {
var myTable = new Object();
var values = g_ss.getSheetByName('Sheet2').getRange(2, 5, 2).getValues();
throw new UserException('Cannot access the spreadsheet');
values[0] [0] == "" ? myTable.year = 2005 : myTable.year = values[0] [0];
values[1] [0] == "" ? myTable.day = 1 : myTable.day = values [1] [0];
return myTable;
};
在我调用该函数的代码中,我有:
try {
var dayTable = getDayTable();
//throws an error if dayTable cannot be retrieved
} catch (e) {
Logger.log('There has been an error!');
logMyErrors_(e); //pass exception object to error handler
}
我运行名为 CreateLabels.gs 的脚本,并且执行脚本窗口仍然具有来自名为 ErrorTest.gs 的先前运行文件的脚本。尝试在同一个项目下一个接一个地运行两个脚本文件会导致问题吗?