【问题标题】:Auto date-stamp across multiple sheets跨多张纸的自动日期戳
【发布时间】:2016-05-04 16:42:03
【问题描述】:

我对此非常非常陌生。提前为我的无知道歉。

我正在尝试使用跨多个工作表的日期自动填充一列。我有 4 张不同的工作表,当数据输入第二列时,我试图自动在第一列填写日期戳。我希望在所有 4 张纸上都进行完全相同的操作。我一次可以成功获得 1 张,但不是全部 4 张。

我知道要求一个脚本来为我们约会似乎很挑剔,但这会对我们的数据输入人员有所帮助。

这就是我所拥有的:

function onEdit(event) {
     var sheetName = 'Customer Received',
         watchCol = [2], 
         stampCol = [1],
         ind = watchCol.indexOf(event.range.columnStart);
     if (event.source.getActiveSheet()
         .getName() !== sheetName ||  ind == -1 || event.range.rowStart < 4) return;
    event.source.getActiveSheet()
             .getRange(event.range.rowStart, stampCol[ind])
             .setValue(event.value ? new Date() : null);
 }

这个脚本在一张纸上做了它需要做的事情。我尝试创建 3 个与上述完全相同的脚本,只是将“收到的客户”替换为其他工作表名称;这导致只有其中一张工作表正常工作。我从下面的线程中了解到,我不能为一张纸执行多个 onEdit 脚本,这就是我的第一次尝试不起作用的原因。

Google script to work across multiple sheets

在这两个线程的帮助下,我得到了这么多的帮助(再加上一个我现在找不到的;该死的我没有加入书签):

Auto-updating column in Google Spreadsheet showing last modify date

Google Spreadsheet Timestamp?

基本上,我在这个网站上找到了很多帮助,可以为我找到一些问题的答案,但我还没有完全做到。 你们中的任何人都可以推动我走完剩下的路吗? :) 我正在寻找的甚至可能吗?

【问题讨论】:

  • 你快到了。 OnEdit 在 every 工作表的编辑事件上被调用,因此唯一缺少的是要标记日期的工作表数组,或者,如果所有工作表都需要标记日期,那么只需得到活动表,就是这样。完成。

标签: google-apps-script


【解决方案1】:

取消对工作表名称的检查将使其适用于特定工作表中的所有工作表

function onEdit(event) {
     var watchCol = [2], 
         stampCol = [1],
         ind = watchCol.indexOf(event.range.columnStart);

     if (ind == -1 || event.range.rowStart < 4) return;

     event.source.getActiveSheet()
       .getRange(event.range.rowStart, stampCol[ind])
       .setValue(event.value ? new Date() : null);
 }

【讨论】:

  • 效果很好!我本可以发誓我试过了,但我一定在某个地方有错字。非常感谢!
猜你喜欢
  • 2021-06-19
  • 1970-01-01
  • 1970-01-01
  • 2021-10-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多