我的代码是一个调度程序,可让用户注册特定工作表中的特定插槽。问题是该代码仅适用于第一张表(“Jan 20 Mon”)。
function onEdit() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet1 = ss.getSheetByName("Jan 20 Mon");
var sheet2 = ss.getSheetByName("Jan 21 Tue");
var sheet3 = ss.getSheetByName("Jan 22 Wed");
var sheet4 = ss.getSheetByName("Jan 23 Thurs");
var sheet5 = ss.getSheetByName("Jan 24 Fri");
var condition1as1 = sheet1.getRange("B2").getValue(); var condition1bs1 = sheet1.getRange("C2").getValue(); var condition1cs1 = sheet1.getRange("D2").getValue(); var condition1ds1 = sheet1.getRange("E2").getValue();
var condition1as2 = sheet2.getRange("B2").getValue(); var condition1bs2 = sheet2.getRange("C2").getValue(); var condition1cs2 = sheet2.getRange("D2").getValue(); var condition1ds2 = sheet1.getRange("E2").getValue();
var condition1as3 = sheet3.getRange("B2").getValue(); var condition1bs3 = sheet3.getRange("C2").getValue(); var condition1cs3 = sheet3.getRange("D2").getValue(); var condition1ds3 = sheet1.getRange("E2").getValue();
var condition1as4 = sheet4.getRange("B2").getValue(); var condition1bs4 = sheet4.getRange("C2").getValue(); var condition1cs4 = sheet4.getRange("D2").getValue(); var condition1ds4 = sheet1.getRange("E2").getValue();
var condition1as5 = sheet5.getRange("B2").getValue(); var condition1bs5 = sheet5.getRange("C2").getValue(); var condition1cs5 = sheet5.getRange("D2").getValue(); var condition1ds5 = sheet1.getRange("E2").getValue();
if (condition1cs1 == "1" && condition1ds1 == "None") {
var response = Browser.msgBox("PLEASE RECHECK SCHEDULE AND TID.", condition1as1+" , "+condition1bs1+" Are you sure?", Browser.Buttons.YES_NO);
if (response == "yes") {
sheet1.hideRows(2,1);
sheet1.getRange('E2').setValue("1");
//insert msgBox here
} else {
Browser.msgBox("Input again.");
}
}
if (condition1cs2 == "1" && condition1ds2 == "None") {
var response = Browser.msgBox("PLEASE RECHECK SCHEDULE AND TID.", condition1as2+" , "+condition1bs2+" Are you sure?", Browser.Buttons.YES_NO);
if (response == "yes") {
sheet2.hideRows(2,1);
sheet2.getRange('E2').setValue("1");
//insert msgBox here
} else {
Browser.msgBox("Input again.");
}
}
}
基本上,我尝试设置我正在使用的所有工作表,以便我可以随时访问它们。第一个if是第一张(并且它可以工作)。第二个if是第二张(并且它不起作用)。
答案 0 :(得分:0)
在Understanding Events中阅读电子表格编辑活动。使用传递给onEdit
函数的事件,您可以确定编辑发生的位置,并避免使用任何显式方法来检索该信息。
警告:此功能目前已被2013年12月推出的新表格打破。有足够的Scripting Issues,您现在应该避免使用新表格。
这是你如何做到这一点的一个例子。
function onEdit(event) {
var ss = event.source; // you don't use this, but if you did, here's how to get it
var cell = event.range; // This is the cell that was edited
// TODO: Add code that returns immediately if the edit occurred somewhere we don't care about
var sheet = cell.getSheet();
var request = sheet.getRange("B2:E2").getValues();
var conditionas = request[0];
var conditionbs = request[1];
var conditioncs = request[2];
var conditionds = request[3];
if (conditioncs == "1" && conditionds == "None") {
var response = Browser.msgBox("PLEASE RECHECK SCHEDULE AND TID.", conditionas+" , "+conditionbs+" Are you sure?", Browser.Buttons.YES_NO);
if (response == "yes") {
sheet.hideRows(2,1);
sheet.getRange('E2').setValue("1");
//insert msgBox here
} else {
Browser.msgBox("Input again.");
}
}
}