首页 > 解决方案 > 应用脚本 onEdit 函数调用 freezePositiveValues

问题描述

我试图在 A 列中对大于零的值进行更改时触发 freezePositiveOutput。 freezePositiveOutput 函数对自身起作用,但与 onedit 结合没有任何反应。

function onEdit(){

  var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("sheet1");
  var tabValidation = "sheet1";
    var activeCell = ss.getActiveCell();

  if(activeCell.getColumn() == 1 && activeCell.getRow() > 1 && ss.getSheetName() == tabValidation){
  freezePositiveOutput();
  }
}

function freezePositiveOutput(){
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("sheet1");
  var range = sheet.getRange("A1:A100");
  var values = range.getValues();
  for (var i = 0; i < values.length; i++) {
    if (values[i][0] > 0) {
      var cell = range.offset(i, 0, 1, 1);   
      cell.copyTo(cell, {contentsOnly:true});
    }
  }
}

标签: google-apps-script

解决方案


尝试这个:

function onEdit(e){
  var sh=e.range.getSheet();
  if(e.range.columnStart==1 && e.range.rowStart>1 && sh.getName()=="Sheet1") {
    freezePositiveOutput(e);
  }
}

function freezePositiveOutput(e){
  var sheet=e.range.getSheet()
  var range=sheet.getRange("A1:A100");
  var values=range.getValues();
  for (var i=0;i<values.length;i++) {
    if (values[i][0]>0) {
      var cell=range.offset(i,0,1,1);   
      cell.copyTo(cell,{contentsOnly:true});
    }
  }
}

推荐阅读