将脚本变量限制为Google sheets中的特定工作表

Limiting script variables to specific sheets in Google Sheets

本文关键字:工作 sheets Google 变量 脚本      更新时间:2023-09-26

我有一个在Google Sheets中运行的脚本。该文档有多张图纸。因此,我希望能够有一个脚本,能够自动化所有工作表上的时间戳。

我已经设法让剧本在所有的纸上运行。。。然而,我希望能够有两个独立的变量列,并使它们相互独立。例如,var cols将影响SHEET 1var colx会影响SHEET 2。这可能吗?

function onEdit(e) {
var s = e.source.getActiveSheet().getName();
var cols = [8];
var colx = [4, 9, 14];
var curDate = Utilities.formatDate(new Date(), "GMT-5", "M/d HH:mm:ss ") 
var r = e.source.getActiveRange();
if (s !== "SHEET 1" && s !== 'SHEET 2' && s !== 'SHEET 3'|| cols.indexOf(e.range.columnStart) ==-1 && colx.indexOf(e.range.columnStart)    ==-1|| 
!e.range.getValue()) return;
 e.range.offset(0,1).setValue(curDate); 
 };

这里是新手编剧,谢谢你的耐心。我认为这将涉及到用var-cols和var-colx指定工作表名称,但不确定这是否是正确的方法。

提前感谢您的帮助!!!!!

我建议更改if语句,使其更清楚地说明您要实现的目标。看起来你要么试图

  1. colscolx之外的任何列匹配时应用时间戳,或者
  2. colscolx中定义的列匹配时,仅应用时间戳

场景1:应用时间戳,列匹配时除外

if (s == "SHEET 1" && cols.indexOf(e.range.columnStart) == -1) {
    e.range.offset(0,1).setValue(curDate); 
} else if (s == "SHEET 2" && colx.indexOf(e.range.columnStart) == -1) {
    e.range.offset(0,1).setValue(curDate); 
} else {
    return;
}

场景2:仅当列匹配时应用时间戳

if (s == "SHEET 1" && cols.indexOf(e.range.columnStart) != -1) {
    e.range.offset(0,1).setValue(curDate); 
} else if (s == "SHEET 2" && colx.indexOf(e.range.columnStart) != -1) {
    e.range.offset(0,1).setValue(curDate); 
} else {
    return;
}

场景3:如果单元格为空,则跳过时间戳

if (s == "SHEET 1" && cols.indexOf(e.range.columnStart) != -1 && !e.range.getValue()) {
    e.range.offset(0,1).setValue(curDate); 
} else if (s == "SHEET 2" && colx.indexOf(e.range.columnStart) != -1 && !e.range.getValue()) {
    e.range.offset(0,1).setValue(curDate); 
} else {
    return;
}

我希望这能有所帮助。