首页 > 解决方案 > 数数。googlesheets appscript中单元格值更改的次数

问题描述

我试图数数。一次单元格值(B2)在工作表中发生变化......(D2单元格给出计数)我能够找到下面的代码仅适用于一个单元格,但不适用于(B2:B51)这样的范围...... ... 任何帮助是极大的赞赏。

function onEdit(e)  { incrementCounter_(e); } 
function    incrementCounter_(e) { 
    var sheetToWatch = 'Sheet2'; 
    var cellToWatch =    'B2'; 
    var cellToIncrement = 'D2'; 
    if (!e || !e.range) { return; } 
    var    sheet = e.range.getSheet(); 
    if (sheet.getName() === sheetToWatch &&    e.range.getA1Notation() === cellToWatch)  { 
        var cell =    sheet.getRange(cellToIncrement); 
        cell.setValue((Number(cell.getValue()) || 0) + 1); 
    }
}

标签: google-apps-scriptgoogle-sheets

解决方案


检查编辑的单元格是否在特定范围内。这应该可以解决问题。

function incrementCounter_(e) { 
  var sheetToWatch = 'Sheet1'; 

  // Define range here 
  // Sample range is B2:B51
  var cellToWatchRange = { 
    top : 2,
    bottom : 51,
    left : 2,
    right : 2
  };

  // Exit if we're out of range or not the sheet we are looking for
  var thisRow = e.range.getRow();
  var thisCol = e.range.getColumn();
  var sheet = e.range.getSheet(); 
  if (thisRow < cellToWatchRange.top || thisRow > cellToWatchRange.bottom
  || thisCol < cellToWatchRange.left || thisCol > cellToWatchRange.right
  || !e || !e.range || sheet.getName() !== sheetToWatch) {
    return;
  }

  // Offset column to 2 to the right (D)
  var cell = sheet.getRange(thisRow, thisCol + 2); 
  cell.setValue((Number(cell.getValue()) || 0) + 1); 
}

编辑器中的完整脚本: 完整脚本

整张纸输出: 整张纸


推荐阅读