遍历文件夹中的所有电子表格并使用此代码进行编辑?
Iterate through all spreadsheets in the folder and edit with this code?
我希望循环通过给定文件夹中的所有电子表格提供的代码。我只是不知道该怎么做。我尝试遍历文件夹错误的每一种方式。我尝试了 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");
}
查找 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
我希望循环通过给定文件夹中的所有电子表格提供的代码。我只是不知道该怎么做。我尝试遍历文件夹错误的每一种方式。我尝试了 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");
}
查找 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