根据下面某人的建议,我正在编辑这篇文章:
我最初的目标是在打开我的Google工作表时,每次打开它时,我希望将当前位于单元格A10、A15和A20中的几个数据验证下拉菜单的值设置为"Select“选项--这是验证范围中的一个单词,以及其他两个文本值。
我被告知这需要在全球范围内声明--但我是一个完全的脚本新手,坦率地说,我不知道如何实现这一点。
我们将非常感谢您的任何建议。
function onOpen() {
SpreadsheetApp.getActiveSheet().getRange('A10').setValue('Select');
SpreadsheetApp.getActiveSheet().getRange('A15').setValue('Select');
SpreadsheetApp.getActiveSheet().getRange('A20').setValue('Select');
发布于 2019-06-25 09:00:25
经过一些测试,我能够让它工作。正如鲁本所说,onOpen,onEdit不能在任何其他函数中。它们指定了已经存在的操作,因此当执行onOpen或onEdit操作时,打开或编辑电子表格时,脚本将自动运行。
您可以查看有关应用程序脚本触发器https://developers.google.com/apps-script/guides/triggers的更多信息,但在这种情况下,onEdit将在每次更新任何单元格时运行,除非您通过使用事件对象指定要运行脚本的单元格以获取更多信息,请查看https://developers.google.com/apps-script/guides/triggers/events。
对于此特定场景,由于您希望脚本在单元格更新时运行,因此必须使用e.range.getA1Notation()检查该单元格是否正在更新。getA1Notation()以A1表示法返回范围。有关更多信息,请查看https://developers.google.com/apps-script/reference/spreadsheet/range#getA1Notation()。下面的示例将帮助您理解以下脚本。
function onOpen(e){
var app = SpreadsheetApp.getActiveSpreadsheet();
var sheet = app.getActiveSheet();
sheet.getRange("A2:A2").clearContent();
sheet.getRange("A10:A10").setValue("Select");
sheet.getRange("A15:A15").setValue("Select");
sheet.getRange("A20:A20").setValue("Select");
}
function onEdit(e){
var app = SpreadsheetApp.getActiveSpreadsheet();
var sheet = app.getActiveSheet();
var A2 = sheet.getRange("A2:A2");
console.log(e.range.getA1Notation());
if (e.range.getA1Notation() === "A2"){
console.log("A2 Updated");
sheet.getRange("A10:A10").setValue('Select');
sheet.getRange("A15:A15").setValue('Select');
sheet.getRange("A20:A20").setValue('Select');
}
}
onOpen函数将在每次打开电子表格时运行,而onEdit函数将在单元格"A2“每次更改其值时执行。基本上,您正在检查使用A1表示法的范围是否等于" A2“,然后它将在if语句中运行代码,否则该函数将被执行,但不会执行任何操作,因为单元格A2仍然没有任何更改。通过这样做,我不确定是否有这种执行的限制,但这是你可以进一步调查的事情,我认为它不会影响,因为这应该在客户端运行,而不是在服务器端。
我希望这能帮上忙,问候。
https://stackoverflow.com/questions/56744023
复制相似问题