[GAS][Sites]お知らせを投稿するには: 逆引きGoogle Apps Script

2012 年 7 月 22 日 日曜日

Googleサイトの「お知らせ」ページにお知らせを投稿するサンプルスクリプト。

以下のような、投稿内容をあらかじめ記載したスプレッドシートを読み込み、お知らせとして投稿する。

▼サンプルスクリプト
このサンプルスクリプトは、スプレッドシートスクリプトとして動作する。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function postAnnouncement() {
  var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var rows = ss.getRange('A2:B'+ss.getLastRow()).getValues();
 
  //あらかじめ作成しておいたお知らせページオブジェクトを取得する
  var parent = SitesApp.getPageByUrl('https://sites.google.com/site/xxxxxxxx');
 
  //スプレッドシートの内容を読み込み、お知らせとして投稿する
  for(var i=0; i<rows.length; i++){   
    var title = rows[i][0];
    var html = rows[i][1]; 
    var encodedTitle = encodeURI(title);
    var created = parent.createAnnouncement(encodedTitle, html);
    created.setTitle(rows[i][0]);
  }
}

サンプルスクリプトの解説

行3 指定した範囲の値を配列に格納している。getRange()は処理コストがかかるため、このように一旦対象範囲をすべて配列に格納し、配列にアクセスするようにすると処理速度が向上する。

行6 手動でもスクリプトからでもどちらでも構わないが、あらかじめ投稿ページの親となるページを用意しておく必要がある。スクリプトからお知らせページを作成するには、お知らせページを作成するには参照。
行12-
行13
現在のところ、お知らせページを投稿するためのメソッドcreateAnnouncement(title, html)の、titleには英数字と一部の記号しか指定することができない。

手動でお知らせページを投稿する際と同様に、ページタイトルがURLの一部となるが、自動で英数字に置き換えてくれないため、日本語のタイトルを指定すると、実行時にエラーが発生する。

そのため、ここではencodeURI()でエンコードした文字列を作成し、ページタイトルとして指定している。

行14 このままだと、件名がエンコードされたままなので、あらためてエンコード前のページタイトルをセットしている。すでに投稿されたページの場合は、タイトルに日本語を指定してもエラーは発生しない。

構文

{お知らせページ}.createAnnouncement(title, html);

パラメータ

title
ページタイトル。日本語は指定できない。サンプルスクリプトの行12-14のように、エンコードした文字列を指定してページを作成したあとに、エンコード前の文字列をsetTitle()する必要がある。
html
お知らせの内容。一部を除き、HTMLタグを使用できる。

戻り値

Page
投稿したページ

関連記事

コメントをどうぞ

トラックバック

このエントリーのトラックバックURL:

http://www.bmoo.net/archives/2012/06/314120.html/trackback