onEdit:如何从另一个工作表引用单元格并从该单元格写入一个单元格值偏移量?

时间:2016-10-10 11:12:47

标签: google-apps-script

我正在尝试使用另一个工作表作为参考来触发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;

}

1 个答案:

答案 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

上将行偏移了-6