google script スプレッドシートからのフォーム作成~3

GAS 公式サンプルコードの理解 Google Apps Script
この記事は約12分で読めます。
スポンサーリンク

スプレッドシートの内容からgoogleカレンダーを設定する

このブロックでは、 スプレッドシートの内容をもとにカレンダーを設定し、スプレッドシートにカレンダーIDを設定します。

この時点でのスプレッドシートとvalue、rangeの内容

会議予定スプレッドシート

Session TitleDateStart TimeEnd TimeLocationEvent
Ethics for monsters5/15/20131:00 PM2:55 PMRm 323: Minotaur’s Labyrinth
Lurking: under the bed or in the closet?5/15/20131:00 PM2:55 PMRm 160: Castle Dracula
Upcoming trends in young-adult literature5/15/20133:00 PM4:55 PMRm 206: Loch Ness
How Bigfoot stays hidden5/15/20133:00 PM4:55 PMRm 144: Imhotep’s Tomb
Techniques to elicit the perfect scream5/16/20139:00 AM12:00 PMRm 278: Grendel’s Cave
Godzilla vs. YOU5/16/20139:00 AM12:00 PMRm 395: Baba Yaga’s Hut
Leprechauns: monsters or otherkin?5/16/20131:00 PM4:00 PMRm 197: The Graveyard
So the cryptozoologists are onto you…5/16/20131:00 PM4:00 PMRm 010: Frankenstein’s Laboratory
range

スプレッドシートのデーターが存在する範囲。( row=9行 colum=6列 )

values

rangeの 長方形グリッド Object[][]。スプレッドシートrangeの値。

スプレッドシートから読み取ったvaluesの内容
[19-12-16 17:25:22:685 JST] 
[
[Session Title
  Date
  Start Time
  End Time
  Location
  Event]
  [Ethics for monsters
  Wed May 15 16:00:00 GMT+09:00 2013
  Sun Dec 31 06:00:00 GMT+09:00 1899
  Sun Dec 31 07:55:00 GMT+09:00 1899
  Rm 323: Minotaur's Labyrinth
  ]
  [Lurking: under the bed or in the closet?
  Wed May 15 16:00:00 GMT+09:00 2013
  Sun Dec 31 06:00:00 GMT+09:00 1899
  Sun Dec 31 07:55:00 GMT+09:00 1899
  Rm 160: Castle Dracula
  ]
  [Upcoming trends in young-adult literature
  Wed May 15 16:00:00 GMT+09:00 2013
  Sun Dec 31 08:00:00 GMT+09:00 1899
  Sun Dec 31 09:55:00 GMT+09:00 1899
  Rm 206: Loch Ness
  ]
  [How Bigfoot stays hidden
  Wed May 15 16:00:00 GMT+09:00 2013
  Sun Dec 31 08:00:00 GMT+09:00 1899
  Sun Dec 31 09:55:00 GMT+09:00 1899
  Rm 144: Imhotep's Tomb
  ]
  [Techniques to elicit the perfect scream
  Thu May 16 16:00:00 GMT+09:00 2013
  Sun Dec 31 02:00:00 GMT+09:00 1899
  Sun Dec 31 05:00:00 GMT+09:00 1899
  Rm 278: Grendel's Cave
  ]
  [Godzilla vs. YOU
  Thu May 16 16:00:00 GMT+09:00 2013
  Sun Dec 31 02:00:00 GMT+09:00 1899
  Sun Dec 31 05:00:00 GMT+09:00 1899
  Rm 395: Baba Yaga's Hut
  ]
  [Leprechauns: monsters or otherkin?
  Thu May 16 16:00:00 GMT+09:00 2013
  Sun Dec 31 06:00:00 GMT+09:00 1899
  Sun Dec 31 09:00:00 GMT+09:00 1899
  Rm 197: The Graveyard
  ]
  [So the cryptozoologists are onto you…
  Thu May 16 16:00:00 GMT+09:00 2013
  Sun Dec 31 06:00:00 GMT+09:00 1899
  Sun Dec 31 09:00:00 GMT+09:00 1899
  Rm 010: Frankenstein's Laboratory
  ]
]

setUpCalendar_サンプルコード

 /**
 * Creates a Google Calendar with events for each conference session in the
 * spreadsheet, then writes the event IDs to the spreadsheet for future use.
 * @param {Array<string[]>} values Cell values for the spreadsheet range.
 * @param {Range} range A spreadsheet range that contains conference data.
 */
function setUpCalendar_(values, range) {
  var cal = CalendarApp.createCalendar('Conference Calendar');
  for (var i = 1; i < values.length; i++) {
    var session = values[i];
    var title = session[0];
    var start = joinDateAndTime_(session[1], session[2]);
    var end = joinDateAndTime_(session[1], session[3]);
    var options = {location: session[4], sendInvites: true};
    var event = cal.createEvent(title, start, end, options)
        .setGuestsCanSeeGuests(false);
    session[5] = event.getId();
  }
  range.setValues(values);

  // Store the ID for the Calendar, which is needed to retrieve events by ID.
  ScriptProperties.setProperty('calId', cal.getId());
}

CalendarApp.createCalendar(values, range)

CalendarAppクラスの createCalendarメソッドを使って、 ユーザーが所有する新しいカレンダーを作成します。

CalendarApp.createCalendar(‘カレンダー名’):
指定のカレンダー名のgoogleカレンダーを作成。

CalendarApp.createCalendar(‘カレンダー名’, JavaScriptオブジェクト配列 option ):
JavaScriptオブジェクト 配列のoptionに基づいて 指定のカレンダー名のgoogleカレンダーを作成。

option例:サマリーと色の指定
  {summary: 'A calendar to plan my travel schedule.',color: CalendarApp.Color.BLUE} 
カレンダーにイベントを書き込む

cal.createEvent(title, startTime, endTime, options)招待メールを送信(options) sendInvites : true 送信する。 false 送信しない(デフォルト)
setGuestsCanSeeGuests: ゲストが他のゲストのカレンダーを見れるように設定
session[5] = event.getId():5colum目にカレンダーIDをセット。 デフォルトのカレンダーIDはメールアドレス。

スプレッドシートにデーターを書き込む

 スプレッドシートにカレンダーID(メールアドレス)を追加したデーターを書き込む。
range.setValues(values);

スプレッドシートに書き込むvaluesの内容
[
  [Session Title
  Date
  Start Time
  End Time
  Location
  Event]
  [Ethics for monsters
  Wed May 15 16:00:00 GMT+09:00 2013
  Sun Dec 31 06:00:00 GMT+09:00 1899
  Sun Dec 31 07:55:00 GMT+09:00 1899
  Rm 323: Minotaur's Labyrinth
  5b763ucndsc30s4kjtfg6n9d00@google.com]
  [Lurking: under the bed or in the closet?
  Wed May 15 16:00:00 GMT+09:00 2013
  Sun Dec 31 06:00:00 GMT+09:00 1899
  Sun Dec 31 07:55:00 GMT+09:00 1899
  Rm 160: Castle Dracula
  crdgjtg8bbog8b779d69k0274c@google.com]
  [Upcoming trends in young-adult literature
  Wed May 15 16:00:00 GMT+09:00 2013
  Sun Dec 31 08:00:00 GMT+09:00 1899
  Sun Dec 31 09:55:00 GMT+09:00 1899
  Rm 206: Loch Ness
  rgqiuqd33ok1kc13sj0vrgqlu0@google.com]
  [How Bigfoot stays hidden
  Wed May 15 16:00:00 GMT+09:00 2013
  Sun Dec 31 08:00:00 GMT+09:00 1899
  Sun Dec 31 09:55:00 GMT+09:00 1899
  Rm 144: Imhotep's Tomb
  jr0v2bjlhqc9j68t1jcpq2mulk@google.com]
  [Techniques to elicit the perfect scream
  Thu May 16 16:00:00 GMT+09:00 2013
  Sun Dec 31 02:00:00 GMT+09:00 1899
  Sun Dec 31 05:00:00 GMT+09:00 1899
  Rm 278: Grendel's Cave
  043v80cs15naa3lssammfb568o@google.com]
  [Godzilla vs. YOU
  Thu May 16 16:00:00 GMT+09:00 2013
  Sun Dec 31 02:00:00 GMT+09:00 1899
  Sun Dec 31 05:00:00 GMT+09:00 1899
  Rm 395: Baba Yaga's Hut
  br833s21u2k0vit0klrl8drnfk@google.com]
  [Leprechauns: monsters or otherkin?
  Thu May 16 16:00:00 GMT+09:00 2013
  Sun Dec 31 06:00:00 GMT+09:00 1899
  Sun Dec 31 09:00:00 GMT+09:00 1899
  Rm 197: The Graveyard
  5nore46qlofahi1mdhqkhpjfi0@google.com]
  [So the cryptozoologists are onto you…
  Thu May 16 16:00:00 GMT+09:00 2013
  Sun Dec 31 06:00:00 GMT+09:00 1899
  Sun Dec 31 09:00:00 GMT+09:00 1899
  Rm 010: Frankenstein's Laboratory
  uvd6cfr4kqu1vch0dsfna9c998@google.com]
 ]
スクリプトにキーと値のペアを設定

ScriptProperties.setProperty(‘calId’, cal.getId())
キー: ‘calId ‘
値: カレンダーID

joinDateAndTime_()サンプルコード

パラメーターで指定された日付のdateオブジェクト生成し開始・終了時間をセット。

 /**
 * Creates a single Date object from separate date and time cells.
 *
 * @param {Date} date A Date object from which to extract the date.
 * @param {Date} time A Date object from which to extract the time.
 * @return {Date} A Date object representing the combined date and time.
 */
function joinDateAndTime_(date, time) {
  date = new Date(date);
  date.setHours(time.getHours());
  date.setMinutes(time.getMinutes());
  return date;
}  

date = new Date(date) :指定日付オブジェクトを生成。
SetHours:時間のセット
setMinutes:分のセット

setHours setMinutes getHours getMinute メソッド参照。
JdbcTimeクラス 参照。

次のサンプルコード

error: Content is protected !!
タイトルとURLをコピーしました