简体   繁体   English

在 Google 脚本(Google 电子表格)上记录更改

[英]Log changes on Google Script (Google Spreadsheets)

I'm looking to create a spreadsheet where it logs data and the changes you make on it.我希望创建一个电子表格,用于记录数据和您对其所做的更改。

For example in sheet , I used a Google Script to do it but instead of only logging in a particular row when you change the data on Sheet1 , it copies all the data you changed since the beginning on Sheet 2 .例如在sheet中,我使用 Google Script 来执行此操作,但当您更改Sheet1上的数据时,它不会仅记录特定行,而是复制自Sheet 2开始以来更改的所有数据。 I only want to log a particular row each time I make a change.每次进行更改时,我只想记录特定的行。

Here's my code这是我的代码

 * Retrieves all the rows in the active spreadsheet that contain Yes
 * in the Include column and copies them to the Report sheet.
 */

function myFunction() {
  var sSheet = SpreadsheetApp.getActiveSpreadsheet();
  var srcSheet = sSheet.getSheetByName("Sheet1");
  var tarSheet = sSheet.getSheetByName("Sheet2");
  var lastRow = srcSheet.getLastRow();
  
  for (var i = 2; i <= lastRow; i++) {
    var cell = srcSheet.getRange("B" + i);
    var val = cell.getValue();
    if (val == 'Yes') {
      
      var srcRange = srcSheet.getRange("A" + i + ":D" + i);
      
      var tarRow = tarSheet.getLastRow();
      tarSheet.insertRowAfter(tarRow);
      var tarRange = tarSheet.getRange("A" + (tarRow+1) + ":D" + (tarRow+1));
      
      srcRange.copyTo(tarRange);
    }
  }
};

Can anyone please help?有人可以帮忙吗?

Use onEdit(e)使用onEdit(e)

function onEdit(e) {
  var srcSheet = e.source.getActiveSheet();
  if (srcSheet.getSheetName() !== 'Sheet1') { return; }
  var row = e.range.rowStart;
  var cols = 4;
  
  var srcRange = srcSheet.getRange(row, 1, 1, cols);
  var values = srcRange.getValues()[0];
  if (values[1] == 'Yes') { 
    var tarSheet = e.source.getSheetByName('Sheet2');     
    tarSheet.appendRow(values);
  }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM