コンテンツ サービス

スクリプトがウェブアプリとして公開されると、特別なコールバック関数が doGet()doPost() は、スクリプトに対してリクエストが行われるたびに呼び出されます。 URL を入力します。API で作成された UI オブジェクトを返すのではなく、 HTML サービスコンテンツ サービスを使用すると、未加工の画像を 記述できます。これにより、「サービス」として機能するスクリプトを記述できます。 GET リクエストと POST リクエストに応答し、さまざまな MIME タイプのデータを提供します。

基本情報

コンテンツ サービスの簡単な例を次に示します。

function doGet() {
  return ContentService.createTextOutput('Hello, world!');
}

スクリプトをウェブアプリとしてデプロイします。 ユーザー インターフェースを提供する場合と同じ手順を使用します。日時 スクリプトの URL に GET リクエストが送信されると、Hello, world! というテキストが返されます。 返されます。書式なしテキストのほか、ATOM を返すこともできます。 CSV、iCal、JavaScript、JSON、RSS、vCard、XML コンテンツ。

RSS フィードの配信

RSS フィードのフィルタリングなど、少し複雑な方法を試してみましょう。「 XKCD コミックはいつも面白みがあるが、最後まで楽しめるとは限らない コミック ストリップにカーソルを合わせると追加の代替テキストが表示されます。 残念ながら、モバイル ブラウザ上でカーソルを合わせることはできません。

たとえば、フィードを編集し、追加の要点をフィードに追加したいとします。 少し下にスクロールすると確認できます 確認する必要があります以下にコードを示します。

function doGet() {
  var feed =  UrlFetchApp.fetch('http://xkcd.com/rss.xml').getContentText();
  feed = feed.replace(
    /(<img.*?alt="(.*?)".*?>)/g,
    '$1' + new Array(10).join('<br />') + '$2');
  return ContentService.createTextOutput(feed)
    .setMimeType(ContentService.MimeType.RSS);
}

これは一見難しそうに見えますが、いくつかの単純な要素に分かれています。Google では、 URL 取得サービス: 元の URL を取得する XKCD RSS フィード。次に、標準の JavaScript 正規表現を使用して、 必要な置換を行います。最後に、編集したフィードを TextOutput オブジェクトを使用して MIME を設定します。 RSS に変換できます。

実際の動作を確認するには、スクリプトをウェブアプリとして公開します。その際、 匿名アクセス(RSS リーダーは匿名アクセスとしてアクセスするため できます。次に、(元の RSS フィードではない)サービスの URL を RSS に追加します。 ウェブブラウザで直接アクセスすることもできます。これで作業は完了です。

スクリプトから JSON を提供する

コンテンツ サービスのその他の機能JSON を他のサービスに 他のウェブサイトやサービスも同期できます。次の簡単なスクリプトでは、 カレンダーの時間枠が特定の日時に開いているかどうかを誰でも確認できるサービスである あります。

function doGet(request) {
  var events = CalendarApp.getEvents(
    new Date(Number(request.parameters.start) * 1000),
    new Date(Number(request.parameters.end) * 1000));
  var result = {
    available: events.length == 0
  };
  return ContentService.createTextOutput(JSON.stringify(result))
    .setMimeType(ContentService.MimeType.JSON);
}

前と同様に、これを匿名のウェブアプリとして公開して機能させます。この例では 末尾に URL パラメータを追加することで、新しいサービスのユーザーが サービス URL を指定します。start パラメータと end パラメータは、確認する期間を指定します。 標準の Unix エポックで指定されます。

curl -L URL_OF_YOUR_SCRIPT?start=1325437200&end=1325439000

サービスは、JSON を使用して、 その範囲内のカレンダーを選択します。

{"available":true}

ウェブページで JSONP を提供する

少し変更するだけで、JSON サービスは JSONP。つまり、この関数を ブラウザで JavaScript から 取得することもできます新しいスクリプトは次のとおりです。

function doGet(request) {
  var events = CalendarApp.getEvents(
    new Date(Number(request.parameters.start) * 1000),
    new Date(Number(request.parameters.end) * 1000));
  var result = {
    available: events.length == 0
  };
  return ContentService.createTextOutput(
    request.parameters.prefix + '(' + JSON.stringify(result) + ')')
    .setMimeType(ContentService.MimeType.JAVASCRIPT);
}

ブラウザからこのサービスを呼び出すには、src 属性を持つスクリプトタグを作成します。 これは、サービスの URL に、prefix というパラメータを追加したものです。この は、呼び出されるクライアントサイドの JavaScript の関数の名前です。 サービスから返された値に置き換えます。

<script src="URL_OF_YOUR_SCRIPT?start=1325437200&end=1325439000&prefix=alert"></script>

この例では、ブラウザにメッセージ ボックスが表示され、サービスの出力が表示されています。 ブラウザの組み込みの alert() 関数を接頭辞として指定しているからです。「 返される JavaScript コードは次のようになります。

alert({"available":true})

リダイレクト

セキュリティ上の理由から、コンテンツ サービスから返されたコンテンツは、 script.google.com(ただし、代わりに次の 1 回限りの URL にリダイレクトされる) script.googleusercontent.com。つまり、コンテンツ サービスを 別のアプリケーションにデータを返すには、HTTP クライアントで 設定されていることが わかりますたとえば、cURL コマンドラインユーティリティで フラグ -L を追加します。詳細については、HTTP クライアントのドキュメントをご覧ください。 をご覧ください。