google-apps-script - 每次使用 onedit 触发器时,Google App 脚本都不会触发
问题描述
Google App 脚本未使用 on edit 触发器触发所有 JavaScript 弹出框。对多个用户的工作表进行更改时不会触发。也只有在感觉喜欢的时候才有效。我已将触发器设置为 onEdit()。我的代码:
function Error() {
var sheet = SpreadsheetApp.getActiveSheet();
if (sheet.getName() == "Protocal Check List 2"){
var ui = SpreadsheetApp.getUi(); // Same variations.
var ss = SpreadsheetApp.getActiveSpreadsheet();
var active = ss.getActiveCell();
var getactive = ss.getActiveCell().getDisplayValue();
var column = ss.getActiveRange().getColumn();
var row = ss.getActiveRange().getRow();
var msg = '';
var section = sheet.getRange('C'+ row);
switch (column) {
case 9:
var msg = "error 1";
break;
case 10:
var msg = "Error 2";
break;
default:
msg = "Error";
break;
}
if(getactive == "TRUE"){
if(column >= 9 && column <= 60
){
var result = ui.alert(
"pika Says",
msg,
ui.ButtonSet.YES_NO);
// Process the user's response.
if (result == ui.Button.YES) {
// User clicked "Yes".
window.alert('Task Complete: \n\n' + msg);
active.setValue('True');
} else {
var i = 0;
while (i < 1) {
var result = ui.prompt(
'Please detail cause of the problem:',
ui.ButtonSet.OK);
var text = result.getResponseText();
var textcount = text.length;
if(textcount > 0) {
i++;
}}
var cell = "H" + row;
var emailAddress = "email@gmail.com";
var d = new Date();
var n = d.toDateString();
var t = d.toTimeString();
var staffname = ss.getRange(cell).getValues();
var message = "Date: " + n +"\n\nTime: " + t +"\n\nStaff: " + staffname + "\n\nError: " + msg + "\n\nProblem: " + text;
var subject = msg;
var thedate = n + " / " + t;
ss.getRange('A1').setValue(thedate);
ss.getRange('B1').setValue(staffname);
ss.getRange('C1').setValue(msg);
ss.getRange('D1').setValue(text);
var s1 = ss.getRange('A1:D1'); //assign the range you want to copy
var s1v = s1.getValues();
var tss = SpreadsheetApp.openById('1mOzdRgKxiP5iB9j7PqUWKKo5oymWuAeQZ1jJ1s6qL9E'); //replace with destination ID
var ts = tss.getSheetByName('AB Protocal'); //replace with destination Sheet tab name
ts.getRange(ts.getLastRow()+1, 1, 1,4).setValues(s1v); //you will need to define the size of the copied data see getRange()
MailApp.sendEmail(emailAddress, subject, message);
// User clicked "No" or X in the title bar.
//ui.alert("The following note has been sent to the Duty Manager: \n\n" + text);
active.setValue('FALSE');
}}}}
}
任何帮助,将不胜感激。我需要它为有权访问工作表的用户在每个信号时间运行。
解决方案
您必须假设 onEdit 触发器是尽力而为,但可能无法捕获对电子表格所做的所有编辑。
错误线程在这里。
推荐阅读
- laravel - 为什么用户凭据在我的登录单元测试中不起作用?
- vue.js - 无法使用“import * as name from './module', webpack 在 Vue 中返回错误
- django - TweepError at / Unable to access file: No such file or directory when I use can
- typescript - 如何在 Typescript 中使用 Ghost 的 api 从异步函数中获取对象属性
- reactjs - react-multi-carousel 显示右侧有间隙
- c++ - DirectX 获取特定的 mipmap
- node.js - 为什么从另一个调用的函数不会显示在节点应用程序的配置文件输出中?
- jmeter - JMeter,暂停一个 HTTP 调用,同时允许其他调用继续
- javascript - 使用显示块 CSS Javascript 获取模式淡入
- r - 为复杂匹配生成组 ID