簡體   English   中英

在 Google 腳本(Google 電子表格)上記錄更改

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

我希望創建一個電子表格,用於記錄數據和您對其所做的更改。

例如在sheet中,我使用 Google Script 來執行此操作,但當您更改Sheet1上的數據時,它不會僅記錄特定行,而是復制自Sheet 2開始以來更改的所有數據。 每次進行更改時,我只想記錄特定的行。

這是我的代碼

 * 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);
    }
  }
};

有人可以幫忙嗎?

使用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