SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

速習Google Apps Script

Google Apps ScriptでスプレッドシートからGoogleドキュメント以外のサービスにアクセスする

Google Apps ScriptによるGoogleドキュメントの操作(2)

  • X ポスト
  • このエントリーをはてなブックマークに追加

Contactデータを作成する

 続いて、Googleコンタクトにデータを作成してみましょう。Google Apps Scriptからは、グループ(ContactGroup)とコンタクト(Contact)のデータをスクリプトで作成することが可能です。これは次のようなメソッドとして用意されています。

ContactGroupの作成
ContactsApp.createContactGroup( グループ名 )
Contactの作成
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("コンタクトデータの登録を完了しました。");
  }
}
図13 シートから登録するコンタクト情報を取得し、グループを作ってその中に登録をする。
図13 シートから登録するコンタクト情報を取得し、グループを作ってその中に登録をする。

 ここでは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 カレンダーに登録されているイベント情報を取得し、シートに出力する。
図14 カレンダーに登録されているイベント情報を取得し、シートに出力する。

 CalendarApp.openByNameでCalendarを取得し、そこからgetEventsで全CalendarEventを取得します。後は、繰り返しを使ってイベントの情報を取り出してはセルに書き出していくだけです。ここでは、CalendarEventの「getTitle」「getStartTime」というメソッドで、イベントのタイトルと開始日時を取り出し表示しています。CalendarEventオブジェクトには、イベントに用意されている情報を取得するのに次のようなメソッドが用意されています。これらを呼び出すことで、イベントに関する各種の情報を得ることができます。

CalendarEventのメソッド
メソッド名 概要
getTitle タイトルを返します。
getDescription 説明のテキストを返します。
getSummary サマリーを返します。
getStartTime イベントの開始日時をDateオブジェクトで返します。
getEndTime イベントの終了日時をDateオブジェクトで返します。
getGuests イベントに登録されているゲストのメールアドレスを配列で返します。
getGuestsStatus イベントのゲストに関するステータスを、EventGuestというオブジェクトの配列として返します。

次のページ
カレンダーにイベントを追加する

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
速習Google Apps Script連載記事一覧
この記事の著者

掌田 津耶乃(ショウダ ツヤノ)

三文ライター&三流プログラマ。主にビギナーに向けたプログラミング関連の執筆を中心に活動している。※現在、入門ドキュメントサイト「libro」、カード型学習サイト「CARD.tuyano.com」を公開...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/5064 2010/04/26 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング