我正在尝试使用另一个工作表作为参考来触发onEdit脚本。 Sheet2中有一个单元格更改为“Y”但基于参考方程式。所以我试图使用Sheet 1作为onEdit的基础。我的问题是,我是否从非活动工作表中指定参考单元格,然后在偏移单元格上写入状态“Y”?
if( s.getName() !== "Sheet1" ) { //checks that we're on the correct sheet
var r = s.getActiveCell();
var col = r.getColumn();
var col2 = col.offset(0,-5);
var target = SpreadsheetApp.setActiveSheet(s.getSheetByName('Sheet2')).setActiveRange(col2,10);
var stat = target.offset(-6,0);
var status = stat.getValue();
var time = new Date();
time = Utilities.formatDate(time, "GMT", "dd-MM-yyyy HH:mm:ss");
switch(status) {
case (status !== "Y"):
target.setValue(time);
break;
}
答案 0 :(得分:0)
好的,你的代码有一些固有的问题。
var col2 = col.offset(0,-5);
不应该有效,因为var col = r.getColumn();
您尝试使用必须在某个范围内使用的.offset()
方法,但是根据您的代码col
}是integer
。
如果要偏移所选的活动单元格,则执行r.offset(0, -5)
。例如,我们在 Sheet2 上,并且第20行,第10列处于活动状态。让我们回顾一下您的代码,看看您会得到什么:
r = Range J20 on _Sheet2_ (specifically that sheet)
col = 20
我们立即看到col2会抛出异常。继续,目前我认为没有理由将活动表格设置为另一个。您可以通过sheet1.getRange(20,10)
和shee2.getRange(20,10)
获取range1和range2。执行range1.setValue("A")
和range2.setValue("B")
会在J20中将A和B写在不同的表格上。
使用相同的场景,我们在J10上(一旦修复所有内容)target.setValue(time);
将在J10中设置值(因为您获取了列号并将其设置为行号)。 stat
将是J4,因为您在 Sheet2 范围target