orl.wakayama-med 2.0

和歌山県立医科大学 耳鼻咽喉科・頭頸部外科

GASでカレンダーイベントをスプレッドシートに二次元配置

スケジュールは月間と週間を作っています。

グーグルカレンダーに入力するところまでは行きましたが、実際人はカレンダーをクリックしません。結局エクセルシートをプリントアウトしたものを見に行くようです。

 

人の行動を変えるのは不可能のようで、GASを使って、スプレッドシートで一目で流れがわかる表を作らないといけないと考えました。

 

外勤先ごとに、個別のカレンダーがあり、派遣医の名前をいれたイベントが各日付に入力されています。これをスプレッドシートに書き出すのは、以前できましたが、もう少し整形してみたいと思います。

 

曜日の決まっているイベントはそのstarttimeを取得してもいいし、event[i]として曜日欄に順に入れもいいと思います。

以下のリファレンスをみると、カレンダー名は

Class Calendar  |  Apps Script  |  Google Developers

Class CalendarEvent  |  Apps Script  |  Google Developers

getNameで。

nameという変数に入れ込んで、setValueで書き込みました。

 

次に曜日指定ですが、こればjavascriptの様式にのっとる感じです。

Tryit Editor v3.5

これで、getDayを実行すると、日曜なので、0が返されるのがわかりました。

外勤の曜日に合わせて所定の列に表示させてみます。GASのリファレンスでもinteger: 整数と書いてありました。

Class DateField  |  Apps Script  |  Google Developers

// Logs the day of the birthday for contact 'John Doe'
var contacts = ContactsApp.getContactsByName('John Doe');
var birthday = contacts[0].getDates(ContactsApp.Field.BIRTHDAY)[0];
Logger.log(birthday.getDay());

これを見ると、連絡先からもひっぱってこれるようです。

カレンダーのevents[i]から曜日はひっぱれず、startTimeからひっぱります。

大体、完成なんですが、イベントを取得する週の指定をしてみたいと思います。

 

スプレッドシートで、日曜の日付は入力規則でカレンダーから選ぶ形とし、月曜以降は+1で日を足していき一週間を表示させます。

 

この初日を

getEvents(new Date('2018/07/22'), new Date('2018/07/29'))

セル指定でいれると、

 getRangeでセルを指定したのち、getValue()で値をとり、初日と最終日で範囲を指定しました。

Class CalendarApp  |  Apps Script  |  Google Developers

 

なんとか出来てきました。

学校健診

学会出張 などが病棟、外来スタッフと共有すべきスケジュールだと思われ、カレンダーの整理をしました。