Google Apps Script客户端脚本能否访问Script Properties?如何访问?
HTML前端JS访问Google Apps Script Properties的方法
核心结论
HTML页面<script>标签内的前端JavaScript无法直接访问Script Properties——因为Script Properties存储在Google Apps Script的服务器端,而前端JS运行在用户浏览器中,两者属于不同环境,没有直接权限互通。必须通过服务器端的GAS函数作为中转,使用google.script.run API完成前后端交互。
实现步骤与代码示例
1. 在code.gs中编写服务器端交互函数
创建读取、修改Script Properties的全局函数,供前端调用:
function doGet() { return HtmlService.createHtmlOutputFromFile('page.html'); } // 读取指定键的Script Property function getScriptProperty(key) { const scriptProps = PropertiesService.getScriptProperties(); return scriptProps.getProperty(key); } // 设置指定键值的Script Property function setScriptProperty(key, value) { const scriptProps = PropertiesService.getScriptProperties(); scriptProps.setProperty(key, value); return '属性设置成功'; }
2. 在page.html的前端JS中调用服务器端函数
使用google.script.run异步调用GAS函数,并通过回调处理结果:
<!DOCTYPE html> <html> <head> <base target="_top"> </head> <body> <button onclick="fetchProperty()">读取测试属性</button> <button onclick="updateProperty()">设置测试属性</button> <div id="output"></div> <script> function fetchProperty() { google.script.run .withSuccessHandler((value) => { document.getElementById('output').textContent = `读取结果:${value || '该属性不存在'}`; }) .withFailureHandler((err) => { document.getElementById('output').textContent = `读取失败:${err.message}`; }) .getScriptProperty('TEST_KEY'); // 替换为你的属性键名 } function updateProperty() { google.script.run .withSuccessHandler((msg) => { document.getElementById('output').textContent = msg; }) .withFailureHandler((err) => { document.getElementById('output').textContent = `设置失败:${err.message}`; }) .setScriptProperty('TEST_KEY', '来自前端的测试值'); } </script> </body> </html>
关键注意事项
google.script.run是异步操作,必须通过withSuccessHandler和withFailureHandler处理结果,不能同步获取返回值。- 服务器端函数返回的数据必须是可序列化的类型(字符串、数字、数组、普通对象等),无法直接返回GAS专属对象(如
PropertiesService实例)。 - 若需要批量操作属性,可以扩展服务器端函数,比如返回所有属性的键值对:
function getAllScriptProperties() { return PropertiesService.getScriptProperties().getProperties(); }
内容的提问来源于stack exchange,提问作者kztd
相关产品推荐
相关产品推荐

