我被困3天,現在試圖讓2谷歌小工具可靠地溝通在谷歌網站上交換基於UiInstance.getId()值的匿名用戶會話信息。由於小工具到小工具的pubsub功能已被棄用,我試圖使用服務器小工具中的ContentService來處理源自客戶端小工具的doPost請求 - 我的想法是,我將會話信息存儲在服務器小工具中,然後拉將數據轉換爲網站中其他頁面上的小工具 - 不知道這是否可行。Google應用腳本:ContentService網絡應用使用情況
但是,我甚至試圖修改StackOverflow上發佈的ContentService上的各種示例。我被困在一個非常基本的步驟,無法超越下面的超級簡單的服務器代碼。我無法弄清楚我需要從我的客戶端小工具中使用的服務器小工具的網址。我似乎正在得到令人困惑的結果。
Server代碼:
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)如果我用瀏覽器打開鏈接,我得到「未知宏觀的doGet」。
4)如果我點擊「Test web app for your latest code」給出的鏈接。從發佈窗口彈出,它似乎帶我到 https://script.googleusercontent.com/echo?user_content_key=WwuWW_Hhp2wlHpHWsX-qAwu7jtKrwlt1fkkesojKEWeJXKm5AoUOhuRHxu4RIHLrWovOBUsHhOB3No0RYr05RE4tWtliFlXKm5_BxDlH2jW0nuo2oDemN9CCS2h10ox_1xSncGQajx_ryfhECjZEnG5I1NuldcVdfVF6dOROkmljXtr0dWIARhfeRbamxWJIIJeMc5tWnrGPpehwqDtynQ&lib=MfYY3NqJ0IdcpreIfwd3uwgmzn1S_adTp
以上從第4步的鏈接工作從瀏覽器,但它的非常片狀從我的客戶端小工具!它似乎在我第一次版本併發布它時工作,但如果我更新版本,即使返回一次,也會返回原始HTML。
我相信我錯過了一些微不足道的步驟,或者存在嚴重的Web應用程序小工具的版本控制或部署錯誤。
我檢查了以下線程是非常有用的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;
}
需要幫助。
謝謝阿倫,我看到你的指針一貫的行爲。我想用googleusercontent網址導致我的困惑。 基本上我需要匿名用戶的會話管理。瀏覽器和會話類沒有唯一的密鑰來跟蹤服務器的會話。有沒有辦法跟蹤網站頁面之間的會話,而不需要用戶通過谷歌帳戶登錄? 我開始探索ContentService doPost/doGet API來查看我是否可以實現上述目標。如果ContentService不適用於此,請提供我可以追求的其他想法。我也編輯過這個標題。 – Siva