[英]Google Sheets Script - Looping through all sheets, and adding all values of a certain column into array to then count unique values
[英]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.