1

私のシナリオ: Web アプリとして発行された user1 として実行されている AppsScript アプリケーションがあります。その中に doGet() を実装しました。user2 として別の Appscript アプリケーションを実行しています。公開された URL で URLFetch を実行しようとすると、リクエスタがログオンする必要があることを示す大量の HTML が返されます。ブラウザから「user2」と同じ URL フェッチを行うと、doGet() は完全にアクセスされ、必要なものが返されます。

Appscript アプリケーション間で HTTP リクエストを取得 (または投稿 - 両方を試しました) できないようです。注意:両方のユーザーは同じドメインにあり、前述のように、ユーザーがブラウザから開始したときに機能します。ユーザーの ID がアプリからアプリに渡されていないようです。

これは、あるアプリケーションから別のアプリケーションにデータを移動する最善の方法を見つけようとしているテスト ケースです。Google にはデータを返すための ContentService がありますが、データをプッシュしたいと考えています。一度に複数のアプリ (10 以上) が 1 つのアプリにプッシュしようとするため、プッシュは私が検討しているアーキテクチャに最適です。そのため、スケーリングが重要です。ContentService は、1 つのアプリが他の 10 をポーリングする場合にスケーリングしないポーリング アプローチに役立ちます。タイムアウトなどが発生します。そのようなアーキテクチャに関するヒントは高く評価されます。もう 1 つのオプションは、10 個のアプリがメイン アプリに接続されている ScriptDB に直接書き込むことです。ScriptDB を共有する唯一の方法はプロジェクト レベルであり、すべてのアプリが ScriptDB 内のすべてを表示でき、アプリ レベルでデータが分離されないため、このオプションは好きではありません。

4

2 に答える 2

1

あるスクリプトから別のスクリプトを呼び出すことができないわけではありませんが (絶対に可能です)、設計上、UrlFetchApp はキーボードでユーザーの認証を渡しません。(この理由は、この回答の範囲外です。それらはセキュリティ関連であり、多くのアプリ ホスティング プラットフォームに共通しており、すぐに変更される可能性は低いと言えば十分です。)したがって、別のスクリプトを呼び出すことができる唯一の方法呼び出されているスクリプトが匿名ユーザーが利用できるものとして公開されている場合です (これは、Henrique が言ったように、スクリプトの所有者として実行する必要があることを意味します)。

ただし、やりたいことは、ライブラリ機能によって簡単にサポートされます。スクリプト A がスクリプト B に何かを通知したい場合、スクリプト A のユーザー認証を維持したままスクリプト B にアクションを実行させる場合は、B を A のライブラリ依存関係として含め、A が実行できる関数を B に追加するだけです。通知をプッシュしたいときに呼び出します。

于 2012-10-10T06:57:04.267 に答える
0

この新しい「ユーザーとして実行」オプションを使用した Apps Script doGet 呼び出しの中間テストは行っていません。しかし、開発者として実行しているときは、以前はうまく機能していました。

また、メイン アプリをインポートしてデータを直接プッシュする場合、必ずしも何も公開する必要はありません。それはすべて、構築する「インターフェイス」 (アンダースコアで終わらないパブリック メソッド) に依存します。db インスタンス オブジェクトを渡す必要はありません。メイン スクリプトは、保存するオブジェクトを受け取り、それ自体を実行できます。

お役に立てれば。

于 2012-10-10T03:02:49.357 に答える