【发布时间】:2012-10-29 18:35:48
【问题描述】:
我现在被困了 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) 如果我点击“为您的最新代码测试网络应用程序”给出的链接。从发布窗口弹出,它似乎带我去 https://script.googleusercontent.com/echo?user_content_key=WwuWW_Hhp2wlHpHWsX-qAwu7jtKrwlt1fkkesojKEWeJXKm5AoUOhuRHxu4RIHLrWovOBUsHhOB3No0RYr05RE4tWtliFlXKm5_BxDlH2jW0nuo2oDemN9CCS2h10ox_1xSncGQajx_ryfhECjZEnG5I1NuldcVdfVF6dOROkmljXtr0dWIARhfeRbamxWJIIJeMc5tWnrGPpehwqDtynQ&lib=MfYY3NqJ0IdcpreIfwd3uwgmzn1S_adTp
第 4 步中的上述链接在浏览器中有效,但在我的客户端小工具中非常不稳定!它似乎在我第一次版本并发布它时工作,但如果我更新版本一次,它就会返回原始 HTML。
我认为我遗漏了一些微不足道的步骤,或者网络应用小工具存在严重的版本控制或部署错误。
我在 stackoverflow 上查看了以下非常有用的线程。 How to use ContentService and doPost to create a REST API
KamilG 似乎已经解决了这里的问题Another doGet() issue with Google Apps Script - "Unknown macro doGet" error
但它对我来说非常不稳定,我无法确定任何可靠的过程来让 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;
}
需要帮助。
【问题讨论】:
标签: google-apps-script google-gadget