Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我的";从电子表格-在表格上提交“;每次我尝试运行触发器时,触发器都会被禁用-如何找出原因?_Javascript_Google Apps Script_Google Sheets_Triggers_Google Forms - Fatal编程技术网

Javascript 我的";从电子表格-在表格上提交“;每次我尝试运行触发器时,触发器都会被禁用-如何找出原因?

Javascript 我的";从电子表格-在表格上提交“;每次我尝试运行触发器时,触发器都会被禁用-如何找出原因?,javascript,google-apps-script,google-sheets,triggers,google-forms,Javascript,Google Apps Script,Google Sheets,Triggers,Google Forms,我有一个谷歌表单,在谷歌表单中收集reddit用户名。我有一个脚本来检查用户名是否不存在(即https://www.reddit.com/user/给出404)或被禁止(用户名在列表中查找var-banked\u users=[…])。如果它不存在或被禁止,我将这一行标记为橙色。以下是脚本: function validateUser() { var spreadsheet = SpreadsheetApp.openById(sheet_id); var sheet = Spread

我有一个谷歌表单,在谷歌表单中收集reddit用户名。我有一个脚本来检查用户名是否不存在(即
https://www.reddit.com/user/
给出404)或被禁止(用户名在列表中查找
var-banked\u 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
    }
  }
}
当我手动运行该函数时,该脚本工作。当我提交表单并从脚本编辑器触发它时,它成功地标记了被禁止或不存在的用户。但是,当我添加触发器以在表单提交时运行它,然后进行表单提交时,它将被禁用:


我不明白为什么。没有解释原因的电子邮件,也没有显示它运行的日志如何找出此触发器被禁用的原因以及如何修复它?谢谢

从独立脚本(未绑定工作表)运行时,我遇到以下错误:

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

执行该行时:

var sheet=SpreadsheetApp.setActiveSheet(spreadsheet.getSheets()[0]);
触发器也以独立的方式运行脚本,因此我建议您避免使用
active
工作表。相反,您可以简单地替换以下代码的上面一行:

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

这种情况发生多久了?我刚刚注意到,您使用的
setActiveSheet
可能会出现错误,因为从触发器运行时没有用户,因此没有用户界面。我不记得确切的术语,但它类似于
这种方法在这种环境中不可用
,但这只是猜测。嘿@Sidewinder你能用我的答案解决你的问题吗?请考虑一下,以防对你有用。否则,请描述您遇到的问题,以便我们可以帮助您。Cheers@Cooper我没有早点承认这一点,真是太糟糕了。这只发生在我写这篇文章的时候,我删除了我的项目的触发器并重新设置它们。carlesgg97的回答起了作用。很抱歉反应太晚-这很有效。我想这是我在使用该功能时的遗留问题,当时工作表在我面前打开。当我将其切换为独立时,我应该删除对
活动的引用。你的回答也帮助我抓住了其他几个例子。标记为已接受,非常感谢。