google-apps-script - 复制的脚本不适用于不同的谷歌工作表
问题描述
我的“订单表”上的以下脚本工作正常(项目名称是“订单表代码”文件是“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 并没有什么不同(以防万一)。
此外,最终我希望即使在工作表关闭时也能运行它,因为我需要它来记录数据何时来自外部源。那可能吗?我想我会更改“工作表”的变量,因为它不会处于活动状态?
解决方案
这将适用于两张纸:
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') {
}
}
推荐阅读
- swiftui - 提取子视图不显示
- database - PC关闭时Neo4j服务器连接?
- matlab - 在Matlab中找到最小值的最大索引
- svelte - 从 Svelte 项目输出单个 HTML 文件
- docker - NAT 后面的 Docker swarm worker
- javascript - 等到完成功能 - 反应原生
- powershell - PowerShell 内存泄漏
- python - 将其放入环境变量后,python中的graphviz出错
- node.js - 无法通过特快路线发送 PNG
- google-cloud-platform - 用于有状态应用程序的 Google Cloud Platform 设计