我想从同一文件夹中的其他电子表格中获得的值中填充工作表。
如何从文件夹中列出的文件中调用getSheetByName()
?
我的代码:
function listFilesInFolder() {
var spsh = SpreadsheetApp.getActiveSpreadsheet();
var spshid = spsh.getId();
var folder = DriveApp.getFileById(spshid).getParents().next();
var folderId = folder.getId();
var contents = DriveApp.getFolderById(folderId).getFiles()
var sh;
var oldVal;
var newVal;
while (contents.hasNext()) {
sh = contents.next();
if (sh.getName() != spsh.getName())
{
newVal = sh.getSheetByName('SCORE').getRange('J5').getValue();
oldVal = spshg.getActiveSheet().getRange('A1').getValue();
spsh.getRange('A1').setValue(newVal+oldVal);
}
}
};
使用
DriveApp 列出文件后,您需要获取其 ID,然后使用按 ID 的电子表格打开它们。随后,您可以使用 getSheets(( 方法来获取工作表名称。您应该在if
条件下实现仅使用电子表格应用程序访问电子表格,而不是驱动器文件夹中包含的所有文件,否则会出现错误。
sh = contents.next();
shID=sh.getId();
if (sh.getMimeType()=='application/vnd.google-apps.spreadsheet' && sh.getName() != spsh.getName())
{
var sheets = SpreadsheetApp.openById(shID).getSheets();
if(sheets.length>=1)
for (var i=0; i<sheets.length; i++)
{
//here instead of logging you can implement your desired functionality, like setValue etc.
Logger.log(sheets[i].getName());
}