浏览列中的每个单元格并重置其值,如果> 0

时间:2015-05-09 10:30:03

标签: google-apps-script

当我打开Goog​​le工作表时,如果其值> 0,我希望将一个特定列中的所有值重置为0。 请注意,有些单元格没有数据,我不想搞砸这些单元格,因为它们应该保持空白。 目前我真的想要建立一个MVP,所以如果我必须在公式中对列的值进行硬编码就可以了。

我做了一些研究并尝试在这里找到相关的例子,我已经调整了一个适用于一个特定单元格的片段,现在我想学习如何自动执行这个脚本,所以我不这样做必须对每个细胞进行硬编码....

这是我的脚本

function onOpen() {
    var doc = SpreadsheetApp.getActiveSpreadsheet();
    var cell = doc.getRange("B4");
    var value = cell.getValue();

    if (value > 0) {
        cell.setValue("0");
    }
    else {
        cell.setValue("0");
    }
} 

我真的很感激,如果你能帮我解决这个问题,或者向我展示正确的方向,或者向我展示一个有效的例子。

由于

2 个答案:

答案 0 :(得分:0)

此代码有效:

//function onOpen() {
function makeZero() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var theSheet = ss.getSheetByName('Sheet 2');

  var theLastRow = theSheet.getLastRow();
  //Get all values from column A
  var theColumnRng = theSheet.getRange(1, 1, theLastRow, 1);
  //Get all the values from column A.  The return from getValues()
  //is a two dimensional array
  var theColumnValues = theColumnRng.getValues();
  var thisCellValue = "";

  var i;
  for (i=0;i<theColumnValues.length;i++) {
    //Every inner array only has one element, therefore, index zero
    thisCellValue = theColumnValues[i][0]; 
    if (thisCellValue > 0) {
      theColumnValues[i][0] = 0;
    }; //No "else" condition needed.  If not greater than zero, do nothing
  };

  //Reset the entire column's values all at once
  theColumnRng.setValues(theColumnValues);
};

答案 1 :(得分:0)

如果要将其与另一列进行比较。 请相应地选择工作表名称,i(行)编号和列编号 (i,2) 2 在这里是列。如果没有 col 则在您的情况下设置 Val2=0 。也不要忘记编辑 setValue。

function ifelse_col_comparision(){
  var ss= SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1');

  for(var i=2;i<ss.getLastRow();i++){
    var val1=ss.getRange(i,2).getValue();
    var val2=ss.getRange(i,3).getValue();
  if(val2 >= val1){ss.getRange(i,4).setValue('Bigger or 0');}
  
  else{ss.getRange(i,4).setValue('lower or -1');}


  }
}

请询问您是否正在寻找其他东西。