每次尝试运行“从电子表格-提交表单时”触发器时,都将禁用它-如何找出原因?

时间:2019-11-24 08:47:51

标签: javascript google-apps-script google-sheets triggers google-form

我有一个Google表单,可在Google表格中收集reddit用户名。我有一个脚本来检查用户名是否不存在(即https://www.reddit.com/user/<username>给出404)或被禁止(用户名对照列表var banned_users = [...]查找)。如果不存在或被禁止,则将该行标记为橙色。这是脚本:

function validateUser() {
   var spreadsheet = SpreadsheetApp.openById(sheet_id);
   var sheet = SpreadsheetApp.setActiveSheet(spreadsheet.getSheets()[0]);
   var last_row_number = sheet.getLastRow();
   var reddit_username = sheet.getRange(last_row_number, 2).getValue();
   var reddit_username_cell = sheet.getRange(last_row_number, 2);
   var reddit_username_row = sheet.getRange(last_row_number, 1, 1, 19);

   if (banned_users.indexOf(reddit_username) != -1) {
    reddit_username_cell.setNote('This user is banned.');
    reddit_username_row.setBackground('#ff9900')
  } else {
     var url = 'https://www.reddit.com/user/' + reddit_username.slice(2) // Get rid of the leading 'u/'
     var options = {
        'muteHttpExceptions': true,
        'followRedirects': true
     };
     var response = UrlFetchApp.fetch(url, options);
     var http_code = response.getResponseCode();

     if (http_code == '404') {
       reddit_username_cell.setNote('This user does not exist.');
       reddit_username_row.setBackground('#ff9900') // #ff9900 is default orange
    }
  }
}

当我手动运行该函数时,此脚本有效。当我提交表单提交并从脚本编辑器触发它时,它成功标记了被禁止或不存在的用户。但是,当我添加触发器以在表单提交上运行它,然后进行表单提交时,它被禁用:

Trigger Disabled Unknown Reason

我不明白为什么。没有电子邮件说明原因,也没有日志表明它已经运行。 我如何找出为什么禁用此触发器以及如何解决它?谢谢!

1 个答案:

答案 0 :(得分:1)

从独立脚本(而不是与Sheets绑定)运行时,出现以下错误:

  

请先选择一个有效的电子表格。 (第11行,文件“代码”)

执行该行后:

var sheet = SpreadsheetApp.setActiveSheet(spreadsheet.getSheets()[0]);

触发器也以独立方式运行脚本,因此,建议您避免使用active工作表。相反,您只需将上面的代码行替换为以下内容:

var sheet = spreadsheet.getSheets()[0];