javascript - 我从 google-apps-script 收到服务器错误,我该如何找出是什么原因造成的?
问题描述
我正在自学应用程序脚本,并创建了一个简单的函数来在出现错误时删除一行。这是代码:
//GLOBALS
var SS = SpreadsheetApp.openById("the_sheet_ID"); //just a placeholder because I didn't want to post the real ID
var SHEET = SS.getSheetByName("300x250");
var RANGE = SHEET.getDataRange();
var DELETE_VAL = "#N/A";
var COL_TO_SEARCH = 2; // The column to search for the DELETE_VAL (Zero is first)
function deleteEachRow(){
var rangeVals = RANGE.getValues();
//Reverse the 'for' loop.
for(var i = rangeVals.length-1; i >= 0; i--){
if(rangeVals[i][COL_TO_SEARCH] === DELETE_VAL){
SHEET.deleteRow(i+1);
};
};
};
我一直在收到来自应用脚本的电子邮件,告诉我发生了服务器错误。以下是电子邮件的副本:
您的脚本,Deleting_Rows,最近未能成功完成。故障摘要如下所示。要为此脚本配置触发器,或更改您的设置以接收未来的失败通知,请单击此处。
20 年 4 月 16 日凌晨 1:27 deleteEachRow 很抱歉,发生服务器错误。请稍等,然后重试。基于时间的 20 年 4 月 16 日凌晨 1 点 27 分
真挚地,
Google Apps 脚本
该函数定时为每分钟运行一次,因此它通常会自行修复。我已经看到这个问题来自已删除函数的触发器,或者损坏的单击此处链接,但我的函数没有被删除,并且链接有效。如果错误与我的代码或谷歌的服务器有关,我无法找到有关导致错误的原因、如何修复它的任何信息。任何人拥有的任何信息或见解都会非常有帮助!
解决方案
由于这是一个偶发的服务器错误,您可以通过使用 try/catch 语句捕获错误来解决它,如果出现错误,请在使用sleep函数稍等片刻后重试执行代码,代码如下所示:
function deleteEachRow(){
var i= 0;
while(i < 3) {
try {
//GLOBALS
var SS = SpreadsheetApp.openById("1e-JtL0KacshxjWMRSIwwCzHeg0oj7OtzIw_-m_VV8HQ"); //just a placeholder because I didn't want to post the real ID
var SHEET = SS.getSheetByName("300x250");
var RANGE = SHEET.getDataRange();
var DELETE_VAL = "#N/A";
var COL_TO_SEARCH = 2; // The column to search for the DELETE_VAL (Zero is first)
var rangeVals = RANGE.getValues();
//Reverse the 'for' loop.
for(var i = rangeVals.length-1; i >= 0; i--){
if(rangeVals[i][COL_TO_SEARCH] === DELETE_VAL){
SHEET.deleteRow(i+1);
};
};
// If it gets here, there were no errors
break;
}
catch(e) {
sleep(5000);
i++;
}
}
};
推荐阅读
- vhdl - vhdl中的并行到串行发送器
- reactjs - 带有自己的路由器的嵌套小应用程序
- java - SimpleDateFormat 解析错误返回
- python - 在 Google DFS 文件夹中运行 jupyter notebook 时“保存和检查点”期间出错
- ios - 如何滚动到比屏幕高的通知内容扩展的底部?(如 iMessage)
- css - 无法更改 wicked pdf 中的字体
- c - 当循环在 C 中重复超过 127 次时内存泄漏
- javascript - 在反应中获取返回未定义
- c - 如何使 sscanf 读取到 '\0' 字符
- html - 3 个 Div 等宽,以 Div 为中心(干净无浮动)