2012 年 7 月 22 日 日曜日
Googleサイトの「お知らせ」ページにお知らせを投稿するサンプルスクリプト。
以下のような、投稿内容をあらかじめ記載したスプレッドシートを読み込み、お知らせとして投稿する。
▼サンプルスクリプト
このサンプルスクリプトは、スプレッドシートスクリプトとして動作する。
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
サンプルスクリプトの解説
行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