【发布时间】:2020-12-29 19:57:11
【问题描述】:
我目前正在开展一个项目,我正在尝试根据用户在 Google 表格中所做的更改填写“上次更新”日期。
我在同一个工作簿中有三个 google 工作表。
我关注了tutorial,它帮助我得到了我想要的东西,但是,当我在工作表中使用相同的代码时,它使用了我在 OnEdit 中阅读的最后一个代码。
如下所示。如果用户更新了 Sheet 1 中的 Column (Col) 1-17,则将最后更新的内容添加到 Row 中的 Col 18。
注意:下面的代码都在1个.gs文件中。
预期行为:
当我在工作表 1 中时,根据工作表 1 中指定的更改和范围更新 Col 18(上次更新)。如果在工作表 2 中为相应的范围执行相应操作。第 3 页也一样。
见下面的代码:
function onEdit(x) {
addTimeStampGlossary(x);
}
function onEdit(y) {
addTimeStampTables(y);
}
function onEdit(z) {
addTimeStampFields(z);
}
function addTimeStampGlossary(x){
// variables
var startRow = 2;
var ws = "Sheet1";
//get modified row and column
var row = x.range.getRow();
var col = x.range.getColumn();
if(col === 1 || col === 2 || col === 3 || col === 4 || col === 5 || col === 6 || col === 7 || col === 8 || col === 9 || col === 10 || col === 11 || col === 12 || col === 13 || col === 14 || col === 15 || col === 16 || col === 17 && row >= startRow && x.source.getActiveSheet().getName() === ws ){
x.source.getActiveSheet().getRange(row,18).setValue(new Date());
}
}
function addTimeStampTables(y){
// variables
var startRow = 2;
var ws = "Sheet2";
//get modified row and column
var row = y.range.getRow();
var col = y.range.getColumn();
if(col === 1 || col === 2 || col === 3 || col === 4 || col === 5 || col === 6 || col === 7 || col === 8 || col === 9 || col === 10 || col === 11 || col === 12 || col === 13 || col === 14 || col === 15 || col === 16 || col === 17 || col === 18 || col === 19 && row >= startRow && y.source.getActiveSheet().getName() === ws ){
y.source.getActiveSheet().getRange(row,20).setValue(new Date());
}
}
function addTimeStampFields(z){
// variables
var startRow = 2;
var ws = "Sheet3";
//get modified row and column
var row = z.range.getRow();
var col = z.range.getColumn();
if(col === 1 || col === 2 || col === 3 || col === 4 || col === 5 || col === 6 || col === 7 || col === 8 || col === 9 || col === 10 || col === 11 || col === 12 || col === 13 || col === 14 || col === 15 || col === 16 && row >= startRow && z.source.getActiveSheet().getName() === ws ){
z.source.getActiveSheet().getRange(row,17).setValue(new Date());
}
}
【问题讨论】:
-
谷歌应用脚本项目中的每个函数都必须有一个唯一的名称
-
@Cooper 当然不建议使用多个同名函数,但是你可以这样做:P 编译器不会抱怨。
-
脚本编辑器可能不会抱怨,但我认为只有其中一个会运行。
-
@Cooper 是的
-
@Marios 谢谢你们俩 - 这真的很有帮助,并且对于类似问题的链接 - 我解决了我的问题。
标签: javascript arrays google-apps-script google-sheets