【问题标题】:How can I clear a specific cell when another cell has been cleared?当另一个单元格已被清除时,如何清除特定单元格?
【发布时间】:2014-06-26 19:23:09
【问题描述】:

我有一个用于 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);
   };
 };
}

脚本运行良好。但是,如果所述单元格已被清除,我希望脚本删除该时间戳。

或者我可以稍微换一种说法:当该行中的另一个特定单元格已被清除时,如何清除该特定单元格?

【问题讨论】:

    标签: google-apps-script


    【解决方案1】:

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

    编辑:

    更好的代码来防止在第 9 列中修改单元格时出现问题。

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

    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('')};  
        }
      }
    }
    

    【讨论】:

    • 我看到之前所有的 cmets 都被删除了,所以这就是问题所在。和解决方案。上面的代码(下一个尝试):如果您在目标单元格中​​粘贴任何格式化的文本,则此代码将不起作用。您需要“仅粘贴值”(Shift+Ctrl+V) 才能执行它并且日期应该按预期显示。
    猜你喜欢
    • 2021-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-11
    • 1970-01-01
    • 2017-03-31
    • 1970-01-01
    • 2018-07-08
    相关资源
    最近更新 更多