【问题标题】:To add data in one cell automatically when another cell is edited in google spreadsheets在谷歌电子表格中编辑另一个单元格时自动在一个单元格中添加数据
【发布时间】:2013-01-29 16:23:11
【问题描述】:

我一直在尝试让谷歌电子表格在编辑另一个单元格时自动将数据添加到一个单元格中,但是我似乎只能使 onedit 函数在全局范围内工作。

具体来说,如果编辑了 B2、B3、B4 等,我希望 N2、N3、N4 等自动填充时间戳或用户名。

任何帮助将不胜感激!

谢谢

【问题讨论】:

    标签: google-apps-script google-sheets


    【解决方案1】:

    扩展答案here...

    function onEdit(e)
    {
      var row = e.range.getRow();
      var sheet = e.range.getSheet();
    
      //  if B2, B3, B4 etc. was edited, fill N2, N3, N4 etc. with a timestamp
      var value = new Date();
      // ... or the user's name. 
      // var value = Session.getActiveUser().getEmail();
    
      var headerRows = 1;  // # header rows to ignore
    
      // Skip header rows
      if (row <= headerRows) return;
    
      // We're only interested in column B (aka 2)
      if (e.range.getColumn() != 2) return;
    
      sheet.getRange(row,14).setValue(value); // N<row>
    }
    

    【讨论】:

      【解决方案2】:

      对于其他可能想要自动添加数据插入的日期和时间的人。

      刚好遇到这个问题,修改了Internet Geeks提供的代码。

      他们的代码通过更新指定的列来工作,时间戳被插入到另一个指定列的同一行中。

      我改变的是我把日期和时间分开了,因为时间戳是一个字符串,不是日期格式。我的 was 对于生成图表很有用。

      它的工作原理是指定要跟踪更改的列,然后分别为日期和时间创建 upDate 和 upTime 列。

      function onEdit(event) {
        var timezone = "GMT+1";
        var date_format = "MM/dd/yyyy";
        var time_format = "hh:mm";
      
        var updateColName = "Резултат";
      
        var DateColName = "upDate";
        var TimeColName = "upTime";
      
        var sheet = event.source.getActiveSheet(); // All sheets
        // var sheet = event.source.getSheetByName('Test'); //Name of the sheet where you want to run this script. 
      
        var actRng = event.source.getActiveRange();
        var editColumn = actRng.getColumn();
        var index = actRng.getRowIndex();
        var headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues();
      
        var dateCol = headers[0].indexOf(DateColName);
        var timeCol = headers[0].indexOf(TimeColName);
      
        var updateCol = headers[0].indexOf(updateColName);
        updateCol = updateCol + 1;
      
        if (dateCol > -1 && timeCol > -1 && index > 1 && editColumn == updateCol) {
          // only timestamp if 'Last Updated' header exists, but not in the header row itself! 
      
          var cellDate = sheet.getRange(index, dateCol + 1);
          var cellTime = sheet.getRange(index, timeCol + 1);
      
          var date = Utilities.formatDate(new Date(), timezone, date_format);
          var time = Utilities.formatDate(new Date(), timezone, time_format);
      
          cellDate.setValue(date);
          cellTime.setValue(time);
        }
      }
      

      希望这对人们有所帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-02-06
        相关资源
        最近更新 更多