如何动态地将值放入列中?

时间:2019-07-19 14:56:27

标签: google-apps-script google-sheets indexof

我正在尝试将某些工作表的名称放在一列中(不包括我不想要的其他工作表的名称)。我已经创建了数组,但是它没有出现。我希望将信息放置在A3:A105中。

我尝试使用indexOf设置列的值。

function sheetNames() {
  var out = [];
  var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  var sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets();
  var exclude = ["About Me", "Contractors", "All Group Bids", "Bid Summary"];

  var bidsheet = spreadsheet.getSheetByName("Bid Summary");
  var column = bidsheet.getRange(3, 1, 105).getValue(); 

  for (i = 0; i < sheets.length; i++) {
    if (exclude.indexOf(sheets[i].getName()) === -1) 
      {column.setValue(out.push(sheets[i].getName()))};

    return out; 
    }
  }


//Nothing appears in the column.

ENTER IMAGE DESCRIPTION HERE!

1 个答案:

答案 0 :(得分:1)

乍一看,我认为可能是'((((())'

尝试取出var column = bidsheet.getRange(3, 1, 105).getValue();部分,因此getValue()Range对象。然后,您可以稍后再在该范围内致电setValuesetValues

注意:

  • SetValue采用单个值,并且应在由单个单元格组成的范围内使用。例如:

    column
  • SetValues采用二维值数组,并且应设置为在多单元格数组上使用。例如:

    var cell = sheet.getRange("B2");
    cell.setValue(100);
    

与其每次遍历该循环都不调用var values = [ [ "2.000", "1,000,000", "$2.99" ] ]; var range = sheet.getRange("B2:D2"); range.setValues(values); ,而是一种更好的方法可能是使用该循环建立一个工作表名称数组,然后对setValue进行一次调用以编写数据到您选择的范围。