如何使用基于列中字符的脚本隐藏Google电子表格中的行?

时间:2013-12-04 19:12:08

标签: google-apps-script google-sheets

我正在使用以下脚本隐藏B列中值为“1”的所有行。

function myfunction () {
function onOpen() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName("CSSMaster");
  var maxRows = sheet.getMaxRows();

  //show all the rows
  sheet.showRows(1, maxRows);

  //get data from clumn B
  var data = sheet.getRange('B:B').getValues();

  //iterate over all rows
  for(var i=0; i< data.length; i++){
    //compare first character, if 1, then hide row
    if(data[i][0].charAt(0) == '1'){
      sheet.hideRows(i+1);
    }
  }
}
}

我转到我的电子表格并输入以下内容:= myfunction(B:B),我看到“思考”但没有任何反应。我究竟做错了什么? (我对Google脚本非常陌生,我猜这是一个非常基本的错误。)

1 个答案:

答案 0 :(得分:3)

你的直觉是正确的 - 这是一个非常基本的错误。首先,确保您实际上正在运行您想要的代码。

在这个例子中,你在函数中有一个函数。当您从电子表格调用myFunction()时,将开始执行,但不会找到任何要运行的代码。由于onOpen()中包含myFunction(),但myFunction()onOpen()之间没有通话,因此无需执行任何操作。

排序 - 您可能只需要摆脱onOpen()的声明和右括号。

接下来,当您调用myFunction(B:B)时,您正在传递一个二维数组值,但您没有参数处理函数。 (您使用getRange('B:B').getValues()显式检索值。)

一般建议:学习一些JavaScript(我推荐CodeAcademy),然后尝试一些Google Apps Script tutorials。凭借这些人的能力和信心,你可以毫无困难地自己动手。