Contactデータを作成する
続いて、Googleコンタクトにデータを作成してみましょう。Google Apps Scriptからは、グループ(ContactGroup)とコンタクト(Contact)のデータをスクリプトで作成することが可能です。これは次のようなメソッドとして用意されています。
ContactsApp.createContactGroup( グループ名 )
ContactsApp.createContact( ファーストネーム, ラストネーム, メールアドレス )
ContactGroupの作成は非常に単純です。単に、作成するグループ名を引数に指定するだけです。Contactの作成は、ファーストネームとラストネーム、メールアドレスをそれぞれ引数に指定して作成します。それ以外の情報は、Contactを作成後、メソッドを呼び出して設定していくことになるでしょう。
では、実際の利用例をあげておきましょう。スクリプトを実行すると、シートに記述された情報を取得しGoogleコンタクトに登録する、というものです。あらかじめ、シートにファーストネーム、ラストネーム、メールアドレスをそれぞれA~C列に1行目から順に記述しておいてください。
function makeContact(){ var gname = Browser.inputBox("グループ名を入力:"); if (gname != "" & gname != "cancel"){ var sheet= SpreadsheetApp.getActiveSheet(); var group = ContactsApp.createContactGroup(gname); var i = 1; while(true){ var fname = sheet.getRange(i, 1).getValue(); var sname = sheet.getRange(i, 2).getValue(); var add = sheet.getRange(i, 3).getValue(); if (add == "") break; var contact = ContactsApp.createContact(fname, sname, add); group.addContact(contact); i++; } Browser.msgBox("コンタクトデータの登録を完了しました。"); } }
ここではSpreadsheetApp.getActiveSheetから各セルの値をgetRangeで取得していき、それを基にしてContactsApp.createContactを実行しています。作成したContactは、ContactGroupの「addContact」を使って、そのグループに組み込むことができます。
Googleカレンダーを利用する
Google Appsで多用されるサービスと言えば、Gmailと並んで「Googleカレンダー」の名が上がることでしょう。各種のスケジュールを管理するツールとしてGoogleカレンダーは重要な役割を果たしています。このカレンダー情報も、Google Apps Scriptから利用することが可能です。
Googleカレンダーの情報能は、いくつかのオブジェクトの組み合わせとして管理されています。全体を管理する「CalendarApp」からカレンダーのオブジェクトを取得し、さらに各イベントのオブジェクトを取得するという形になります。基本的なメソッドを以下に整理しておきましょう。
CalendarApp.getDefaultCalendar() CalendarApp.openByName( カレンダー名 ) CalendarApp.openByEmailAddress( メールアドレス )
カレンダー関係の機能は、「CalendarApp」というオブジェクトとして用意されています。これはGoogleカレンダーのサービス全般に関する機能を提供するものです。このオブジェクトから、個々のカレンダーを管理する「Calendar」オブジェクトを取得します。
Calendarを取得するためのメソッドは3種類用意されています。「getDefaultCalendar」は、デフォルトで設定されているカレンダーを取得するものです。「openByName」は、カレンダー名を指定して取得します。「openByEmailAddress」は、メールアドレスを指定し、そのメールアドレスのカレンダーを取得します。これは、他の人のカレンダーを共有している場合に用いるものです。
《Calendar》.getEvents(《Date》,《Date》)
Calendarの中から、それぞれのイベントを管理する「CalendarEvent」オブジェクトを取得します。「getEvents」は、引数にDateを2つ指定して呼び出すことで、その範囲内にある全イベントをCalendarEventの配列として返します。
では、これらを利用した簡単な例をあげておきましょう。カレンダー名を入力すると、そのカレンダーから2010年の予定をすべて取得し、シートに書きだします。これも、最初に実行する際、Googleカレンダーへのアクセスを許可するための認証画面が表示されますので、アクセスを許可してください。
function getCalData(){ var cname = Browser.inputBox("カレンダー名を入力:"); if (cname != "" & cname != "cancel"){ var cal = CalendarApp.openByName(cname); var arr = cal.getEvents(new Date(2010,1,1),new Date(2010,12,31)); var num = arr.length; var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); var range = sheet.getRange(1,1,num,2); for(var i = 0;i < num;i++){ range.getCell(i + 1,1).setValue(arr[i].getTitle()); range.getCell(i + 1,2).setValue(arr[i].getStartTime()); } Browser.msgBox("予定を表示しました。"); } }
![図14 カレンダーに登録されているイベント情報を取得し、シートに出力する。](http://cz-cdn.shoeisha.jp/static/images/article/5064/14.gif)
CalendarApp.openByNameでCalendarを取得し、そこからgetEventsで全CalendarEventを取得します。後は、繰り返しを使ってイベントの情報を取り出してはセルに書き出していくだけです。ここでは、CalendarEventの「getTitle」「getStartTime」というメソッドで、イベントのタイトルと開始日時を取り出し表示しています。CalendarEventオブジェクトには、イベントに用意されている情報を取得するのに次のようなメソッドが用意されています。これらを呼び出すことで、イベントに関する各種の情報を得ることができます。
メソッド名 | 概要 |
getTitle | タイトルを返します。 |
getDescription | 説明のテキストを返します。 |
getSummary | サマリーを返します。 |
getStartTime | イベントの開始日時をDateオブジェクトで返します。 |
getEndTime | イベントの終了日時をDateオブジェクトで返します。 |
getGuests | イベントに登録されているゲストのメールアドレスを配列で返します。 |
getGuestsStatus | イベントのゲストに関するステータスを、EventGuestというオブジェクトの配列として返します。 |