Apps Script全局变量未按预期更新问题求助
Apps Script全局变量url未更新问题解决
问题原因
你的代码中url作为全局变量,仅在脚本首次加载时执行一次字符串拼接(此时docId为空字符串),因此url会固定为https://docs.google.com/document/d//。后续createProject函数更新docId后,url不会自动重新计算,因为没有触发它的重新赋值逻辑。
解决方案
方案一:动态生成url(推荐)
每次需要使用url时直接拼接,避免依赖全局变量的自动更新:
var docId = ""; function doGet() { var output = HtmlService.createHtmlOutputFromFile('MyUI'); return output; } function createProject(test="test"){ const doc = DocumentApp.create(test); docId = doc.getId(); Logger.log("Doc ID is: " + docId); } function myOnClickHandler(){ // 每次使用时动态拼接最新的url const url = "https://docs.google.com/document/d/" + docId + "/"; const myList = ["Hello from the server", url] Logger.log("URL is: " + url); } function app(){ createProject(); myOnClickHandler(); }
方案二:同步更新全局url变量
在createProject中更新docId的同时,重新赋值url:
var docId = ""; var url = "https://docs.google.com/document/d/" + docId + "/"; function doGet() { var output = HtmlService.createHtmlOutputFromFile('MyUI'); return output; } function createProject(test="test"){ const doc = DocumentApp.create(test); docId = doc.getId(); // 更新docId后同步更新全局url url = "https://docs.google.com/document/d/" + docId + "/"; Logger.log("Doc ID is: " + docId); } function myOnClickHandler(){ const myList = ["Hello from the server", url] Logger.log("URL is: " + url); } function app(){ createProject(); myOnClickHandler(); }
内容的提问来源于stack exchange,提问作者ubuntuuber
相关产品推荐
相关产品推荐

