如何修改AppScript脚本:通过文件夹ID批量导入Google Sheets
修改Google Apps Script实现通过文件夹ID批量导入表格数据
需要修改的核心部分:
- 替换手动ID列表为文件夹ID
删掉原脚本里的get_IDs数组,改成定义一个folderId变量,填入存储目标表格的文件夹ID。 - 新增获取文件夹内表格文件的逻辑
使用DriveApp服务获取指定文件夹下的所有Google Sheets格式文件,自动收集文件ID,不用手动逐个添加。 - 调整循环逻辑
把原来遍历ID数组的循环,改成遍历文件夹里的表格文件,同时增加容错判断(比如跳过没有"Billing card"工作表的文件)。
修改后的完整脚本:
function getData() { // 替换成你的目标文件夹ID const folderId = "你的文件夹ID"; const targetSheetName = "Billing card"; var ss = SpreadsheetApp.getActiveSpreadsheet(); var copySheet = ss.getSheetByName(targetSheetName); copySheet.getRange('A2:Z').clear(); let pasteRow = 1; const folder = DriveApp.getFolderById(folderId); const files = folder.getFilesByType(MimeType.GOOGLE_SHEETS); while (files.hasNext()) { const file = files.next(); try { var ss1 = SpreadsheetApp.openById(file.getId()); var sourceSheet = ss1.getSheetByName(targetSheetName); // 跳过没有目标工作表的文件 if (!sourceSheet) continue; var sheetsRange = sourceSheet.getDataRange(); var sheetsValues = sheetsRange.getValues(); // 移除前5行表头(保留原逻辑) sheetsValues.splice(0, 5); if (sheetsValues.length === 0) continue; // 跳过空数据 copySheet.getRange(pasteRow + 1, 1, sheetsValues.length, sheetsValues[0].length).setValues(sheetsValues); pasteRow += sheetsValues.length; } catch (e) { // 捕获异常,避免单个文件出错导致整个脚本终止 console.log(`处理文件 ${file.getName()} 时出错: ${e.message}`); } } }
关键修改说明:
- 用
DriveApp.getFolderById(folderId)获取目标文件夹,再通过getFilesByType(MimeType.GOOGLE_SHEETS)筛选出所有Google表格文件,自动批量获取文件ID,不用手动维护ID列表。 - 增加了
try-catch异常处理,就算某个文件打不开或者没有指定工作表,脚本也能继续处理其他文件。 - 保留了原脚本中移除前5行、追加数据到目标工作表的核心逻辑。
内容的提问来源于stack exchange,提问作者Hellen Zhelevskaya
相关产品推荐
相关产品推荐

