GASでカレンダーイベントをスプレッドシートに二次元配置
スケジュールは月間と週間を作っています。
グーグルカレンダーに入力するところまでは行きましたが、実際人はカレンダーをクリックしません。結局エクセルシートをプリントアウトしたものを見に行くようです。
人の行動を変えるのは不可能のようで、GASを使って、スプレッドシートで一目で流れがわかる表を作らないといけないと考えました。
外勤先ごとに、個別のカレンダーがあり、派遣医の名前をいれたイベントが各日付に入力されています。これをスプレッドシートに書き出すのは、以前できましたが、もう少し整形してみたいと思います。
曜日の決まっているイベントはそのstarttimeを取得してもいいし、event[i]として曜日欄に順に入れもいいと思います。
以下のリファレンスをみると、カレンダー名は
Class Calendar | Apps Script | Google Developers
Class CalendarEvent | Apps Script | Google Developers
getNameで。
nameという変数に入れ込んで、setValueで書き込みました。
次に曜日指定ですが、こればjavascriptの様式にのっとる感じです。
これで、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
なんとか出来てきました。
学校健診
学会出張 などが病棟、外来スタッフと共有すべきスケジュールだと思われ、カレンダーの整理をしました。