【发布时间】: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