質問: ### 前提・実現したいこと 業務のシフトの種類が約20種あり、それぞれにシフト番号が振られています。 例えば、#001 : 10:00~18:30、#002:12:30~21:00 ...といった感じです。 ただし、5日先の分までしかシフトは決定されません。 朝、会社に行くと5日先のシフトが判明する(壁に貼り出されている)、という仕組みです。 皆はめいめいそれを見て、自分のスケジュール帳に書きこんだり、スマホのカレンダーに打ち込む、という作業をしています。 そこで、日付とシフト番号を選択するだけで、自身のGoogleカレンダーに新規予定として追加するシステムを作ってみました。 Google Apps Scriptを活用し、フォーム+スプレッドシート(シフト一覧表)から、自分のGoogleカレンダーに予定を追加することは実現できました。 このシステムを他の人にもおすそわけ、と思ったのですが、うまくいっていません。 ### 発生している問題・試したこと フォームの「メールアドレスを収集する」をオンにし、他の人がフォームを開いて送信した時、入手したアドレスから CalendarApp.getCalendarById(アドレス)でその人のカレンダーを取得できれば、と思いました。 しかし他人のカレンダーを取得できません(返り値がnull)。 要は、Googleカレンダーを私と共有しないとダメ、と理解しました。 しかし、すべての同僚に「私とカレンダーを共有して下さい」とお願いするのも、プライバシーの面や手間という点で、 受け入れられそうにありません。 そもそも、このシステムを実現するためには、GASは適していないのかな?とも考えました。 ### お聞きしたいこと 質問としては、以下2点となります。 1このようなシステムにGASが適していないとすれば、他のどのような方法がより適していると考えられるでしょうか。 2作成済のGASを活用できるとすれば、どのような方法で実現できるでしょうか。 初心者ゆえの漠然とした質問で誠に恐縮ですが、皆様のお知恵を拝借したく。
回答: こういうのはコンサルタントに相談したほうがいいのではないでしょうか。 何ができるかは、御社の状況に大いに左右されるように思います。例えば「壁にはらない、最初から電子データにする」とかいう合理的な解決は取れないように思います。 従って、2.について、憶測を重ねた回答になりますが、 質問者様がオーナーである(従って書き込み権が付与できる)、シフトのみを含むカレンダーを新規に作成し、それを(便利になりたい人は)各自のカレンダーで「カレンダー追加」する 既存のスクリプトは、人を表現する情報と日付とシフト番号を入力するスタイルにして、例えばスクリプトで書き込むときに、人ごとに色をかえるなどをする →要は、質問者様が皆のシフトを入れてあげて共有してあげるカレンダーを新設する、って感じです。 他には メールで送信する を考えました。このとき単にメールにかくのではなく、添付として.icsというファイルフォーマットにすれば、おそらく受信者に予定追加するかの選択が出てくると思います。ただ、カレンダーをics(ical形式)にするのは自力でやるしかなさそうで、そこそこ大変かなと思いました(なので検証してません)。