简体   繁体   English

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

[英]Iterate through all spreadsheets in the folder and edit with this code?

I am looking to loop the code provided through all of the spreadsheets in a given folder. 我想循环遍历给定文件夹中所有电子表格提供的代码。 I'm just not sure how to do it. 我只是不确定如何去做。 Every way I try to iterate through the folder errors out. 我尝试通过各种方式遍历文件夹错误。 I have tried like 10 different variations. 我尝试了10种不同的变化。

I am going to use a stand alone script that I can insert the ID number of the folder. 我将使用一个独立的脚本,该脚本可以插入文件夹的ID号。 Any ideas? 有任何想法吗? Thanks so much for any help you can give. 非常感谢您可以提供的任何帮助。 I'm still learning, but getting better. 我还在学习,但是越来越好。 :) Brandon :)布兰登

 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"); } 

Look for getFolderById() or getFoldersByName(), plus SpreadsheetApp.openById(), you'll figure it out pretty easily. 寻找getFolderById()或getFoldersByName(),再加上SpreadsheetApp.openById(),您将很容易发现。

Edit: Made a stub: 编辑:存根:

// 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);
}

Also, try to work with more than a range at a time, don't do a lot of setValue() and getValue(), instead work with array, I would treat it as such: 另外,尝试一次使用多个范围,不要做很多setValue()和getValue(),而是使用array,我将其视为这样:

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");

As seen in good practices: https://developers.google.com/apps-script/best_practices 如最佳做法所示: https : //developers.google.com/apps-script/best_practices

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM