Javascript HideRows(Google表格脚本编辑器)

时间:2017-01-16 11:16:12

标签: javascript google-sheets

我试图隐藏Google表格中特定工作表的所有行(spreasheet包含其他工作表)。要隐藏的行是两个prompt命令(first_r和last_r)给出的ID之间的行。

当我点击按钮hide时,我会看到两个提示窗口,然后是一个"完成的脚本"但这行没有被隐藏 这是我的代码

function hide(){
var ui = SpreadsheetApp.getUi();
var first_r_str = ui.prompt('First row to hide');
var last_r_str = ui.prompt("Last row to hide");
 var first_r = parseInt(first_r_str);
 var last_r = parseInt(last_r_str);   

var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('MYSheet');

for (i = first_r; i <= last_r; i++){
sheet.hideRows(i); 
}

function onOpen() {
  var ui = SpreadsheetApp.getUi();
  ui.createMenu('Custom Menu')
      .addItem('Hide Rows', 'hide')
      .addToUi();
}

我的代码在脚本编辑器中(从电子表格顶部菜单,选择工具,然后选择脚本编辑器)

2 个答案:

答案 0 :(得分:2)

下面的代码非常正常,您错过了正确获取文本值并可以使用范围。

来源Google Apps Script

function hide(){
var ui = SpreadsheetApp.getUi();
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];

var startRow = ui.prompt('enter first').getResponseText();
var endRow = ui.prompt('enter last').getResponseText();
var range = sheet.getRange(startRow, 1, endRow);
ss.hideRow(range);

}

function onOpen() {
  var ui = SpreadsheetApp.getUi();
  ui.createMenu('Custom Menu')
      .addItem('Hide Rows', 'hide')
      .addToUi();
}

答案 1 :(得分:1)

正如MGA在他的例子中所示,主要问题是你没有从答案中提取文本。

由于您有一个连续的范围,您应该拨打hideRows而不是循环,这样会更有效。

function hide(){
  var ui = SpreadsheetApp.getUi();
  var first_r_str = ui.prompt('First row to hide').getResponseText();
  var last_r_str = ui.prompt("Last row to hide").getResponseText();
  var first_r = parseInt(first_r_str);
  var last_r = parseInt(last_r_str);   

  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName('Sheet1');

  sheet.hideRows(first_r, last_r - first_r + 1); 
}