【问题标题】:Trigger works for me but not for my coworkers触发器适用于我,但不适用于我的同事
【发布时间】:2020-03-03 19:46:52
【问题描述】:

我找到了一个解决方案 - 我禁用了由 Chrome V8 提供支持的 New Apps Script 运行时,这样脚本就可以正常运行了。感谢 player0 和 Cooper 的帮助。

我正在 Google 表格上运行一个脚本,当我们从下拉框中选择完成时,它会将日期添加到它旁边的单元格中,并将整行通过电子邮件发送到指定列中的电子邮件并将该行移动到另一个电子表格。触发器对我们整个办公室都有效,但现在触发器只对我有效,对其他人无效。我已经尝试手动添加触发器,但这仍然不起作用。他们将在发送电子邮件时收到点击是或否的提示,但不会添加日期,也不会发送电子邮件,并且该行不会移动到另一个电子表格。我会附上脚本。 PS,我从办公室的其他人那里收到了这个错误 -

"insertId": "-b34c8mev3dmh", "jsonPayload": { “服务上下文”:{ “服务”:“AKfycbyWSN3cTy8EFQa-O0BdEkD1-mv2Ch0_QJyGdxwARQ” }, “语境”: { “报告位置”:{ "functionName": "onEdit", "filePath": "代码", “行号”:3 } }, "message": "TypeError: Cannot read property 'columnStart' of undefined\n at onEdit(Code:3:14)" }, "resource": { “类型”:“app_script_function”, “标签”: { "function_name": "onEdit", “invocation_type”:“未知”, “project_id”:“project-id-7782795119186644705” } },“时间戳”:“2020-03-03T19:26:06.684Z”,“严重性”:“错误”,“标签”:{ “script.googleapis.com/process_id”: “EAEA1GOy-5ZVtkWzLmBjIDEppHWx8s_53wy3z-YwpeR7_qYPiFhBieuyZpGnXpmAoAn3iRsKw7yVqE1DzHTMxoOKX-AdlvXIDwF6fMvntASIvF9nk-llZAP7XmG4ZySKOflqcAbimliGEF4nEjkfw_cdILTNgTesQpjOaGTvdI6GhGjn4M3bxxlEQ7yDOgcryfEZpuznnxRTphSL0KsMeoR1NgJ75HNhNtg6-M-Uj_-nFVF4jgHjcFLsO3-AuctQgpKzM7vCu-5uptzCiMl_GoLSW_IztLa2RoWEiYp0”, "script.googleapis.com/user_key": "AJBqszan4nKoGMzVONs0MJNTlfxnM27ajlvZlz1Zgk0gT3p+b6sGQERsGNxTDk0oSVmVtWCL6r0G", "script.googleapis.com/deployment_id": "AKfycbyWSN3cTy8EFQa-O0BdEkD1-mv2Ch0_QJyGdxwARQ", “script.googleapis.com/project_key”:“MKysurstsXJM-RhbK-YQe446zZFpi0V11”},“logName”: "projects/project-id-7782795119186644705/logs/script.googleapis.com%2Fconsole_logs", "receiveTimestamp": "2020-03-03T19:26:07.288469136Z"

function onEdit(e) {
// we need to be in column 13 in order to do something (at all)
if(e.range.columnStart === 13) {
var s = e.source.getActiveSheet();

// only continue if it's completed and where in the correct tab
if(e.value == "Completed" && s.getName() == "Open Requests") {
  var r = e.range;
  var userEmail = r.offset(0,-9).getValue();
  var name = r.offset(0,-7).getValue();
  var subject = "Technology Request for " + name;
  var body = "Your request has been completed by " + r.offset(0,-1).getValue();    

  body += "\nfor -  " + r.offset(0,-7).getValue();
  body += "\nby doing the following: " + r.offset(0,-2).getValue();
  body += "\nOriginal problem was stated as: " + r.offset(0,-4).getValue();

  // show dialogue
  var ui = SpreadsheetApp.getUi();
  var response = ui.alert('Are you sure you want to send this email to ' + userEmail + '?', 'Subject: ' + subject + '\n\n' + body + '\n\n\n', ui.ButtonSet.YES_NO);

  // process the user's response.
  if (response == ui.Button.YES) {
    MailApp.sendEmail(userEmail, subject, body, {name:"Technology Dept"}); 
  }

  // add time stamp
  e.range.offset(0, 1).setValue(new Date());

  // move the row elsewhere 
  var numColumns = s.getLastColumn();
  var targetSheet = e.source.getSheetByName("Closed Requests");
  var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
  s.getRange(r.rowStart, 1, 1, numColumns).moveTo(target);
  s.deleteRow(r.rowStart);


} 
} 

【问题讨论】:

  • 你的同事需要为自己授权脚本
  • 给他们一个运行的函数。它甚至可以是一个不做任何事情的函数,以便他们有机会授权范围。
  • player0 - 他如何自己授权脚本?
  • Cooper - 我如何给他们一个运行的功能?
  • 我只是将答案作为社区 Wiki 提供,如果您想实际提供有关如何解决问题的更详细的解决方案,请随时创建答案,以便我删除我的。

标签: google-apps-script google-sheets triggers scripting


【解决方案1】:

问题与自动切换到the new v8 runtime 有关。

回到旧的运行时已经解决了这个问题,如果你愿意,你可以把这个错误报告给Issue Tracker

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-03
    • 1970-01-01
    • 2020-06-12
    • 1970-01-01
    • 2012-08-02
    相关资源
    最近更新 更多