Google Apps Script报错:ReferenceError: folderId未定义求解决
问题排查与修复
错误原因
你调用list_all_files_inside_one_folder_without_subfolders(folderId, true)时传递了folderId参数,但该函数的定义中没有声明接收这个参数,导致函数内部无法识别folderId变量,触发ReferenceError。
修复步骤
- 给
list_all_files_inside_one_folder_without_subfolders函数添加参数声明,接收传入的folderId - 修复代码中未声明的
file变量(避免隐式全局变量) - 移除调用时未使用的第二个参数
true(无实际作用)
修正后的完整代码
function onOpen() { var SS = SpreadsheetApp.getActiveSpreadsheet(); var ui = SpreadsheetApp.getUi(); ui.createMenu('List Files/Folders') .addItem('List All Files and Folders', 'listFilesAndFolders') .addToUi(); }; function listFilesAndFolders(){ var folderId = Browser.inputBox('Enter folder ID', Browser.Buttons.OK_CANCEL); if (folderId === "") { Browser.msgBox('Folder ID is invalid'); return; } list_all_files_inside_one_folder_without_subfolders(folderId); }; function list_all_files_inside_one_folder_without_subfolders(folderId){ var sh = SpreadsheetApp.getActiveSheet(); var folder = DriveApp.getFolderById(folderId); var list = []; list.push(['Name','ID','URL','Date Created']); var files = folder.getFiles(); while (files.hasNext()){ var file = files.next(); // 显式声明file变量 var row = [] row.push(file.getName(),file.getId(),file.getUrl(),file.getDateCreated()); list.push(row); } sh.getRange(1,1,list.length,list[0].length).setValues(list); }
额外说明
- JavaScript中函数参数必须在定义时声明,才能在函数内部访问使用
- 变量使用前必须用
var/let/const声明,避免创建隐式全局变量引发潜在问题
内容的提问来源于stack exchange,提问作者Dilshan
相关产品推荐
相关产品推荐

