在一个Google工作表上运行多个时间戳

时间:2019-08-15 09:42:25

标签: google-apps-script google-sheets scripting timestamp

我有一个电子表格,其中包含一个名为“团队分配表”的表。我要两个时间戳;当A列中的任何单元格=“ 9。已关闭/移交”的时间戳,向右移动一个单元格。在L列的任何单元格中输入值时,需要另一个时间戳,要在右侧4个单元格中输入时间戳。

每个人都单独工作,但不能一起工作。

没有编码/谷歌脚本的经验。任何帮助表示赞赏。

function onEdit(e) {
  var ss = SpreadsheetApp.getActiveSpreadsheet();  
  var sh0 = ss.getSheetByName("Team Allocation sheet");
  myFunction1();
  if ([11].indexOf(e.range.columnStart) != -1) {
    e.range.offset(0, 4).setValue(new Date());
    myFunction2();
    if ([1].indexOf(e.range.columnStart) == -1 || ['9. Closed/Handed over'].indexOf(e.value) == -1) return;
e.range.offset(0, 1)
    .setValue(new Date());}
  }

脚本编辑器说:

ReferenceError: "myFunction1" is not defined. (line 4, file "Code")

2 个答案:

答案 0 :(得分:0)

尝试一下:

function onEdit(e) {
var s = SpreadsheetApp.getActiveSheet();
if( s.getName() == "Team Allocation sheet" ) { 
var r = s.getActiveCell();
if( r.getColumn() == 1 ) { 
  var nextCell = r.offset(0, 1);
  var newDate = Utilities.formatDate(new Date(), 
  "GMT+8", "MM/dd/yyyy hh:mm:ss");
  nextCell.setValue(newDate);
}
if( r.getColumn() == 12 ) { 
  var nextCell = r.offset(0, 4);
  var newDate1 = Utilities.formatDate(new Date(), 
  "GMT+8", "MM/dd/yyyy hh:mm:ss");
  nextCell.setValue(newDate1);
}
}
}

答案 1 :(得分:0)

您不需要两个功能。您需要在同一函数中使用两个if语句。

我还建议您进行检查,以确保编辑事件来自“团队分配表”。否则,即使在其他某些标签上进行了编辑,您也会在此标签上看到时间戳。

function onEdit(e) {
  var name = e.source.getActiveSheet().getName(); // Name of the sheet that got edited
  var column = e.range.columnStart;
  var value = e.value; // New value in cell after editing

  if ( name == "Team Allocation sheet" && value == "9. Closed/Handed over" && column == 1) {
    e.range.offset(0, 1).setValue(new Date());
  }

  if ( name == "Team Allocation sheet" && column == 12) {
    e.range.offset(0, 4).setValue(new Date());
  }
}