我现在被困了 3 天,试图让 2 个谷歌小工具在谷歌网站上可靠地通信,以根据 UiInstance.getId() 值交换匿名用户会话信息。由于不推荐使用小工具到小工具的 pubsub 功能,因此我尝试使用服务器小工具中的 ContentService 来服务来自客户端小工具的 doPost 请求 - 想法是,我将会话信息存储在服务器小工具中并拉将数据放入网站其他页面上的小工具中 - 不确定这是否可能。
但是,我什至试图修补 StackOverflow 上发布的 ContentService 上的各种示例。我被困在一个非常基本的步骤中,无法超越下面的超级简单的服务器代码。我无法弄清楚我需要从客户端小工具中使用的服务器小工具的 URL 是什么。我似乎得到了令人困惑的结果。
服务器代码:
function doGet(e) {
var output = ContentService.createTextOutput();
output.setContent("Hi from ContentServer!");
return output;
}
我遵循的步骤:
1) 将服务器发布为 Web 应用程序并进行设置,以便任何人/匿名者都可以访问它。
2) 发布窗口弹出窗口显示该小工具可在 https://script.google.com/macros/s/AKfycbyIa07kBC-gqG0nJq3Up5GzUntbTaYcM1KmaYF7vQvFIWN_qxA/exec获得
3) 如果我使用浏览器打开链接,我会得到“Unknown macro doGet”。
4)如果我点击“测试您的最新代码的网络应用程序”给出的链接。from the publish window popup, it seems to take me to https://script.googleusercontent.com/echo?user_content_key=WwuWW_Hhp2wlHpHWsX-qAwu7jtKrwlt1fkkesojKEWeJXKm5AoUOhuRHxu4RIHLrWovOBUsHhOB3No0RYr05RE4tWtliFlXKm5_BxDlH2jW0nuo2oDemN9CCS2h10ox_1xSncGQajx_ryfhECjZEnG5I1NuldcVdfVF6dOROkmljXtr0dWIARhfeRbamxWJIIJeMc5tWnrGPpehwqDtynQ&lib=MfYY3NqJ0IdcpreIfwd3uwgmzn1S_adTp
第 4 步中的上述链接可在浏览器中使用,但在我的客户端小工具中非常不稳定!它似乎在我第一次版本并发布它时起作用,但如果我更新版本一次,它就会返回原始 HTML。
我相信我错过了一些微不足道的步骤,或者网络应用小工具存在严重的版本控制或部署错误。
我在 stackoverflow 上查看了以下非常有用的线程。 如何使用 ContentService 和 doPost 创建 REST API
KamilG 似乎已经克服了这里的问题 Google Apps 脚本的另一个 doGet() 问题 - “未知宏 doGet”错误
但它对我来说非常不稳定,我无法确定任何可靠的程序来让 ContentService 从我的服务器小工具中工作。
任何帮助和解释将不胜感激。
这是我的客户端小工具代码。
function doGet(e) {
// var url = "https://script.google.com/macros/s/AKfycbyIa07kBC-gqG0nJq3Up5GzUntbTaYcM1KmaYF7vQvFIWN_qxA/exec";
//var url = "https://script.googleusercontent.com/echo?user_content_key=9tzQxTSPm8ADsHKl4bCg6ru-49C19kYZCW8IRuWiWi-Xe_lTlQZS4xq8v5aPqjR6Ybj7-xjjJXyQPhOH0T3KFtJUtXc7U-Dkm5_BxDlH2jW0nuo2oDemN9CCS2h10ox_1xSncGQajx_ryfhECjZEnJlCLn2pnKC0O1TYz53ccgjxtVC9ccM8kFegFJ0AJSK_YP_ylqfjfm1EU_BUbZUu-88PMDJ6xpj8&lib=MTLHdJRs3UPYj3bYgbhBNnNGZ7UmftE34";
var url = "https://script.googleusercontent.com/echo?user_content_key=LvlwGkBktQ732xyD1HJbh5OhMsuhkidt_rOovw-olm-wJQF4LlErMDSxsfDaAb4UBYqOeTI3-8soIBj-KaOCDi0WlUav4Nl_m5_BxDlH2jW0nuo2oDemN9CCS2h10ox_1xSncGQajx_ryfhECjZEnG5I1NuldcVdfVF6dOROkmljXtr0dWIARhfeRbamxWJIIJeMc5tWnrGPpehwqDtynQ&lib=MfYY3NqJ0IdcpreIfwd3uwgmzn1S_adTp";
// WELL ONE OF THE URLS WORKS FROM ABOVE!!! BUT ONLY TILL I UPDATE THE SERVER WEB APP VERSION :(
var app = UiApp.createApplication().setTitle("ClientService Client test");
app.setStyleAttribute("background", "azure");
var fetchMethod = 'get';
var response = UrlFetchApp.fetch(url, {method: fetchMethod});
//var lbl = app.createHTML("<b>Response :</b>" + response.getContentText());
var lbl = app.createTextArea().setText(response.getContentText());
var lbl1 = app.createHTML("<b>Response code :</b> "
+ response.getResponseCode());
app.add(lbl);
app.add(lbl1);
return app;
}
请帮助。