首页 > 解决方案 > 复制的脚本不适用于不同的谷歌工作表

问题描述

我的“订单表”上的以下脚本工作正常(项目名称是“订单表代码”文件是“Code.gs”)

function onEdit(e) {
  var sheet = e.source.getActiveSheet();
  var activeCell = sheet.getActiveCell();
  var col = activeCell.getColumn();
  var row = activeCell.getRow();

  if (e.range.getSheet().getSheetName() == 'Order Sheet') {

    if (col == 6) { // assuming status is in column 6 (E), adapt if needed
      if (col == 6 && sheet.getRange(row, col + 1).isBlank())
        sheet.getRange(row, col + 1).setValue(new Date()).setNumberFormat('DDD, dd MMM'); // change the display format to your preference here  
    }
    if (col == 6 && sheet.getRange(row, col).isBlank())
      sheet.getRange(row, col + 1).setValue("")
  }
}

现在我有一个新工作表“工作时间”,我想在其中使用相同类型的功能(不同的列和时间而不是日期),但即使我将此脚本复制到新的脚本文件(项目“工作时间代码” ,文件名“Code.gs”)并将 SheetName(第 7 行)更改为“Work Hours”,但它似乎不起作用。

我想可能是因为我有 2 个带有 Code.gs 文件的项目,但是将其更改为 Code2.gs 并没有什么不同(以防万一)。

此外,最终我希望即使在工作表关闭时也能运行它,因为我需要它来记录数据何时来自外部源。那可能吗?我想我会更改“工作表”的变量,因为它不会处于活动状态?

标签: google-apps-scriptgoogle-sheets

解决方案


这将适用于两张纸:

function onEdit(e) {
  var sh= e.range.getSheet()
  var shts=['Order Sheet','Work Hours']
  if (shts.indexOf(sh.getName()!=-1)) {
  //do whatever you want in here
   
  }
}

或者如果想在每张纸上做不同的事情:

function onEdit(e) {
  var sh= e.range.getSheet()
  if(sh.getName() == 'Order Sheet') {
  }
  if(sh.getName() == 'Work Order') {
  }
}

推荐阅读