UiInstance.getId()値に基づいて匿名のユーザーセッション情報を交換するために、2つのGoogleガジェットをGoogleサイトで確実に通信させようとして、3日間立ち往生しています。ガジェットからガジェットへの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)ブラウザを使用してリンクを開くと、「不明なマクロdoGet」が表示されます。
4)「最新のコードについてWebアプリをテストする」というリンクをクリックした場合。ウィンドウのポップアップを発行するから、私を取るように見える https://script.googleusercontent.com/echo?user_content_key=WwuWW_Hhp2wlHpHWsX-qAwu7jtKrwlt1fkkesojKEWeJXKm5AoUOhuRHxu4RIHLrWovOBUsHhOB3No0RYr05RE4tWtliFlXKm5_BxDlH2jW0nuo2oDemN9CCS2h10ox_1xSncGQajx_ryfhECjZEnG5I1NuldcVdfVF6dOROkmljXtr0dWIARhfeRbamxWJIIJeMc5tWnrGPpehwqDtynQ&lib=MfYY3NqJ0IdcpreIfwd3uwgmzn1S_adTp
上記の手順4のリンクはブラウザからは機能しますが、クライアントガジェットからは非常に不安定です。初めてバージョンを作成して公開したときに機能するようですが、バージョンを1回でも更新すると、生のHTMLが返されます。
些細な手順が欠けているか、Webアプリガジェットに深刻なバージョン管理または展開のバグがあると思います。
私は非常に便利なstackoverflowの次のスレッドをチェックしました。 ContentServiceとdoPostを使用してRESTAPIを作成する方法
KamilGはここで問題を克服したようですGoogleAppsScriptの別の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;
}
助けが必要です。