簡體   English   中英

計算列中的更改次數 - Google Script / Sheets

[英]Count the number of changes in a column - Google Script / Sheets

首先,如果我犯了一些語言錯誤,請原諒我(我是意大利人!)。 我正在嘗試為 Google Sheet 編寫一個腳本,它可以幫助我跟蹤列的更改次數。 我想要一個每次單元格值更改時都會增長的計數器。 前任:

-A列:單元格A3從“2020”變為“2021”
-B 列:單元格 B3 從 0 變為 1(o 從 2 變為 3,對值進行簡單的 +1)。

我寫了這段代碼,但我不明白錯誤在哪里。

  function onEdit(e) {
  incrementCounter_(e);
}

function incrementCounter_(e) {
  
  var stw = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Foglio2");
  var c1 = stw.getRange(2, 1);
  var c2 = stw.getRange(2, 2);


  if (!e || !e.range) {
    return;
  }
  
  var sheet = e.range.getSheet();
  for (var i=2; i<=6; i++){
  if (sheet.getName() === stw && e.range.getA1Notation() === stw.getrange().getvalue(i,1)) {
   var cell = stw.getrange().getvalue(i,2);
   cell.setValue((Number(cell.getValue()) || 0) + 1);
  }
}
}

謝謝您的幫助!

你是這個意思嗎?

function onEdit(e) {
  if (e.range.getA1Notation() === 'A3') {
    var range = SpreadsheetApp.getActiveSheet().getRange('B3');
    var value = range.getValue();
    value++;
    range.setValue(value);
  }
}

沒有必要為此使用兩個函數。

代碼

// Copyright 2020 Google LLC.
// SPDX-License-Identifier: Apache-2.0

function onEdit(e) {
  var sheet = e.range.getSheet();
  var sheetName = sheet.getName(); 
  if (sheetName == "Foglio2" && e.range.getColumn() == 1) {
    var row = e.range.getRow();
    var val = sheet.getRange(row, 2).getValue();
   sheet.getRange(row, 2).setValue(val + 1);
  }
}

解釋

您可以通過使用onEdit(e)觸發器來實現您想要的。 上面的函數使用e事件對象並檢查編輯的確切位置。 可以看出,在這種情況下不需要for循環,因為為了獲取所需的列和行,已經使用了getColumn()getRow()方法。

在這種情況下,腳本會檢查進行編輯的工作表是否為Foglio2以及是否對A列進行了編輯。 如果條件檢查,它會增加B列中的相應值。

筆記

請注意getValue(value1, value2)不是有效方法,如果您想獲取該特定范圍的值,您必須將兩個參數傳遞給getRange()方法。

參考

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM