Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script 当另一个单元格已清除时,如何清除特定单元格?_Google Apps Script - Fatal编程技术网

Google apps script 当另一个单元格已清除时,如何清除特定单元格?

Google apps script 当另一个单元格已清除时,如何清除特定单元格?,google-apps-script,Google Apps Script,我有一个用于Google Docs电子表格的脚本,当填充特定列中的任何单元格时,它会自动在该行的不同列中放置时间戳: function onEdit() { var s = SpreadsheetApp.getActiveSheet(); if( s.getName() == "Sheet1" ) { //checks that we're on the correct sheet var r = s.getActiveCell(); if( r.getColumn() == 9

我有一个用于Google Docs电子表格的脚本,当填充特定列中的任何单元格时,它会自动在该行的不同列中放置时间戳:

function onEdit() {
 var s = SpreadsheetApp.getActiveSheet();
 if( s.getName() == "Sheet1" ) { //checks that we're on the correct sheet
   var r = s.getActiveCell();
   if( r.getColumn() == 9 ) { //checks the column
     var nextCell = r.offset(0, 3);
     if( nextCell.getValue() === '' ) //is empty?
       var time = new Date();
     time = Utilities.formatDate(time, "Canada/Eastern", "M/dd/Y, h:mm:ss");
       nextCell.setValue(time);
   };
 };
}
剧本写得很好。但是,如果所述单元已被清除,我希望脚本删除该时间戳


或者我可以换一种方式来回答这个问题:当一行中的另一个特定单元格被清除时,我如何清除该行中的另一个特定单元格?

代码几乎相同,我将其简化了一点,以便更容易理解它在做什么

编辑: 更好的代码可以防止在修改第9列中的单元格时出现问题

我使用了onEdit触发器中的参数(在本例中称为e),请参阅以了解有关该参数的详细信息

function onEdit(e) {
  var s = SpreadsheetApp.getActiveSheet();
  Logger.log(JSON.stringify(e)+'  ------------------> value = '+e.value);
  var r = e.range;
  var nextCell = r.offset(0, 3);
  if( s.getName() == "Sheet1" && r.getColumn() == 9 ){ //checks that we're on the correct sheet & column
    if( nextCell.getValue() === '' && e.value !=null){ //is empty?
      var time = new Date();
      time = Utilities.formatDate(time, "Canada/Eastern", "M/dd/Y, h:mm:ss");
      nextCell.setValue(time);
    }else{
      if(e.value==null){ nextCell.setValue('')};  
    }
  }
}

我看到以前的所有评论都被删除了,所以问题出在这里。以及解决方案。上面的代码(对于下一个尝试):如果在目标单元格中粘贴任何格式化文本,此代码将无法工作。您需要“仅粘贴值”(Shift+Ctrl+V),以便它执行,并且日期应按预期显示。