Google Apps Script调用folder.getFiles()返回空结果的问题求助
解决Google Apps Script无法读取Drive文件夹文件的问题
核心问题:代码拼写错误
你的代码存在两处大小写/拼写错误,这是导致无法获取文件的直接原因:
file.gerName()应为file.getName()(方法名拼写错误,少了一个t)sheet.getrange()应为sheet.getRange()(Google Apps Script对大小写敏感,Range首字母需大写)
修正后的完整代码
function retrieveFiles() { var folderid = '1R07zv6TK9ka_BX--EMucP4pFlqYUsDJH'; Logger.log(folderid); var folder = DriveApp.getFolderById(folderid); Logger.log(folder.getName()); var files = folder.getFiles(); Logger.log(files); var data = []; while (files.hasNext()) { var file = files.next(); var fileUrl = 'https://drive.google.com/open?id=' + file.getId(); data.push([file.getName(), fileUrl]); } var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); // 新增空数据判断,避免数组越界报错 if (data.length > 0) { sheet.getRange(1, 1, data.length, data[0].length).setValues(data); } else { Logger.log("未读取到任何文件,请检查文件夹权限或内容"); } }
额外排查建议
如果修正后仍无数据返回,检查以下内容:
- 确认运行脚本的Google账号与拥有文件夹访问权限的账号一致
- 若为共享文件夹,确保你拥有「查看」或「编辑」权限(仅「评论」权限无法读取文件列表)
- 若文件夹包含子文件夹,
getFiles()仅返回当前目录下的直接文件,如需获取子文件夹内的文件,可使用递归遍历逻辑:
// 递归遍历文件夹及子文件夹的函数 function getAllFiles(folder, data) { var files = folder.getFiles(); while (files.hasNext()) { var file = files.next(); var fileUrl = 'https://drive.google.com/open?id=' + file.getId(); data.push([file.getName(), fileUrl]); } var subFolders = folder.getFolders(); while (subFolders.hasNext()) { getAllFiles(subFolders.next(), data); } } // 修改主函数调用递归 function retrieveFiles() { var folderid = '1R07zv6TK9ka_BX--EMucP4pFlqYUsDJH'; var folder = DriveApp.getFolderById(folderid); var data = []; getAllFiles(folder, data); var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); if (data.length > 0) { sheet.getRange(1, 1, data.length, data[0].length).setValues(data); } else { Logger.log("未读取到任何文件"); } }
内容的提问来源于stack exchange,提问作者Shankar Ramani
相关产品推荐
相关产品推荐

