迭代文件夹中的所有电子表格并使用此代码进行编辑?

时间:2015-01-06 20:26:13

标签: javascript google-apps-script

我希望循环通过给定文件夹中的所有电子表格提供的代码。我只是不确定该怎么做。我尝试迭代文件夹错误的每一种方式。我试过了10种不同的变化。

我将使用一个独立的脚本,我可以插入该文件夹的ID号。 有任何想法吗? 非常感谢您提供的任何帮助。我还在学习,但越来越好。 :) 布兰登



function dataUpdate() {

  var ss = SpreadsheetApp.getActiveSpreadsheet();  // Trying to iterate through all spreadsheets in a folder rather than using .getactivespreadsheet().
  var sheet = ss.getSheets()[0];
  var cell = sheet.getRange(2,7);
  var sheets = ss.getSheets()[3];
  var cell1 = sheets.getRange(7,8);
  var cell2 = sheets.getRange(7,9);
  
  cell.setValue('RTI')
  sheets.setName("RTI Data");
  sheets.getRange(4, 8).setValue('Cell Value');
  sheets.getRange(5, 8).setValue('1');
  sheets.getRange(6, 8).setValue('2');
  sheets.getRange(7, 8).setValue('3');
  sheets.getRange(5, 9).setValue('Tier 1');
  sheets.getRange(6, 9).setValue('Tier 2');
  sheets.getRange(7, 9).setValue('Tier 3');
 
  cell1.setHorizontalAlignment("center").setBackground("#f0f0f0");
  cell2.setHorizontalAlignment("center").setBackground("#f0f0f0");

}




1 个答案:

答案 0 :(得分:0)

查找getFolderById()或getFoldersByName()以及SpreadsheetApp.openById(),你会很容易理解它。

编辑:制作存根:

// Iterates trough all files in given folder and logs the A1 in the first sheet in all of them
var folderId = "sdoijawodkhqoud98y12eh";
var folder = DriveApp.getFolderById(folderId);
var files = folders.getFiles();
while (files .hasNext()) {
  var file = files.next(),
      ss = SpreadsheetApp.openById(file.getId()),
      sheet = ss.getSheets()[0],
      A1Value = sheet.getRange("A1").getValue();
  Logger.log(A1Value);
}

另外,尝试一次使用多个范围,不要做很多setValue()和getValue(),而是使用数组,我会这样对待:

sheetRange = ss.getRange(1, 1, 7, 9); 
sheetVals = sheetRange.getValues();
sheetVals[ 1 ][ 6 ] = "RTI"
sheetVals[ 3 ][ 7 ] = "Cell Value"

// ... and so on...

sheetRange.setValues(sheetVals);
sheets.getRange(7, 8, 1, 2).setHorizontalAlignment("center").setBackground("#f0f0f0");

正如良好做法所示:https://developers.google.com/apps-script/best_practices