容器绑定脚本项目中,如何获取文件内容用于模板渲染?
访问容器绑定脚本项目中上传文件内容的解决方案
ScriptApp.getResource并非Google Apps Script的官方方法,要读取容器绑定脚本项目中上传文件的内容,可改用ScriptApp.getProjectFiles()方法遍历项目文件并读取目标内容,具体修改如下:
修改后的函数实现
requireGs 函数
function requireGs(scripts) { console.log(scripts); const projectFiles = ScriptApp.getProjectFiles(); const fileMap = {}; // 将项目中所有文件按名称存入映射表 while (projectFiles.hasNext()) { const file = projectFiles.next(); fileMap[file.getName()] = file; } return `<script>\n${scripts .map(function (d) { const file = fileMap[d]; if (!file) throw new Error(`文件 ${d} 不存在于项目中`); return file.getBlob().getDataAsString(); }) .join('\n\n')}</script>\n`; }
requireCSS 函数
function requireCSS(scripts) { const projectFiles = ScriptApp.getProjectFiles(); const fileMap = {}; while (projectFiles.hasNext()) { const file = projectFiles.next(); fileMap[file.getName()] = file; } return `<style>\n${scripts .map(function (d) { const file = fileMap[d]; if (!file) throw new Error(`文件 ${d} 不存在于项目中`); return file.getBlob().getDataAsString(); }) .join('\n\n')}</style>\n`; }
关键说明
ScriptApp.getProjectFiles()会返回当前脚本项目内的所有文件(包括上传的.gs、.html等类型文件),通过遍历将文件按名称存入映射表,后续可快速匹配目标文件。- 调用时传入的文件名需与项目中文件的实际名称完全一致,若文件存放在项目子文件夹中,文件名需包含完整路径(例如
server/models.gs)。 - 首次运行脚本时可能需要授权,若遇到权限缺失问题,可在脚本编辑器的「扩展」>「Apps Script API」中确认API已启用,或在运行时完成权限授权流程。
内容的提问来源于stack exchange,提问作者LittleFoxyFox
相关产品推荐
相关产品推荐

