表格中的 Google 脚本:脚本遇到错误(如何获取错误!?)

Zoo*_*oop 5 google-sheets google-apps-script

我的问题非常简单:您如何获得错误消息!?

我只需要离开顶部的红色框,上面写着“Script CustomSort 遇到错误”,这几乎是最模糊的!

更深入地说,以下内容大约在一周前有效,现在不再有效。我至少一个月没碰剧本了。虽然已添加行。我将电子表格恢复到以前工作时的状态,但它仍然不起作用。

function onOpen() 
{
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var menuEntries = [ {name: "Custom Sort", functionName: "CustomSort"}];
  ss.addMenu("Sort", menuEntries);

  CustomSort();
}

function CustomSort() 
{
  var sheet = SpreadsheetApp.getActiveSheet();
  var range = sheet.getRange(2,1,sheet.getMaxRows()-1,sheet.getMaxColumns()); 

  var headers = sheet.getRange(1, 1, 1, sheet.getMaxColumns()).getValues();
  var sortOrder = new Array;
  sortOrder.push({ column: headers[0].indexOf("Completion Date")+1, ascending: true });
  sortOrder.push(headers[0].indexOf("Owner")+1);
  sortOrder.push(headers[0].indexOf("Tentative Due Date")+1);
  sortOrder.push({ column: headers[0].indexOf("Priority")+1, ascending: false });
  sortOrder.push(headers[0].indexOf("Department")+1);

  range.sort(sortOrder); 
}
Run Code Online (Sandbox Code Playgroud)

我可以在脚本编辑器中运行脚本而没有错误,但我的理解是它运行带有空工作表的脚本(这是真的吗?),这可能表明工作表中存在问题。

如果有错误甚至是行号,我会很快弄清楚!我试图避免撕开相当大的电子表格或代码来解决这个问题。

我已经做了一堆谷歌搜索,并且有很多类似的问题是谷歌问题的参考,但我认为这个问题已经存在好几天了。

(我也没有记录日志的运气,这进一步限制了我的调试能力。总之,我觉得我在调试工具部门有障碍。我唯一的策略是将所有内容简化为最简单的测试用例,然后慢慢地一次添加一行代码或一行电子表格,直到它爆炸为止。当然必须有更好的方法;哦,伟大的互联网,请给我你的智慧!)

Psy*_*ish 3

嗯,好的 'ol try-catch +电子邮件或记录器至少可以得到错误提示,然后在调试器中仔细观察数据进行调试(在可疑行处设置断点,检查数据状态,逐步调试):

function calculateSmthng()
{
  try {
       makeHardWorkForMe();
      } 
  catch (e) {
      MailApp.sendEmail("me@example.com", "Error report from ...", e.message); //either with e-mail
      Logger.log("Bad thing happened, catched at calculateSmthng(): " +e.message); //or logger
     }
}
Run Code Online (Sandbox Code Playgroud)

它通常对我有用。