こんにちは、クラウドエースでマーケティングをやっているイノッチです。
皆さん、会社や自宅などで Google Home はお使いですか?
我が家のリビングには Google Home mini が鎮座しており、Spotifyを連携させて音楽を聴いたりニュースや天気予報など毎日の生活に欠かせないデバイスとなっております。
が、しかし!!!!!!!!!!!!
(Google のプレミアパートナーである)弊社では当然のごとく G Suite を使っており、スケジュール管理は完全に Google カレンダー に依存しております。
しかしながら非常に非常に残念なことに G Suite アカウントの Google カレンダーでは、 Google Home や Google アシスタント に予定を聞いても喋ってもらうことが出来ない仕様になっているのです。。。
『スケジュール教えてくれないアシスタントなんてどこがスマートなんだよ』という怒りを原動力に試行錯誤した結果、ついにこの仕様をぶち破ることに成功したので、こちらで公開しちゃいます!!ちなみに僕は非エンジニアですし、この裏技にはなんのコードも必要ないので誰でも出来ます!
目次
まずシステムの概要はこれだ!!
とにかく、G Suite アカウントのカレンダーはどんなに頑張っても Google Home で喋ってくれないので、Google Home に喋ってもらうために G Suite ではない普通の Google アカウント(以下、プライベートアカウント)が必要となります。結論的にはプライベートアカウントの Google カレンダーに登録された予定を Google Home に喋ってもらうのですが、そうなるとG suiteのカレンダーとプライベートのカレンダーを同期させる必要があります。
違うアカウント同士でカレンダーの同期は不可能なので、IFTTTというサービスを使って、
①「G Suite のカレンダーで予定を新規作成すると、プライベートアカウントのカレンダーにも同じ予定が作成される」
②「G Suite のカレンダーで誰かから招待され、参加 「はい」にした予定が、プライベートアカウントのカレンダーにも同じ予定が作成される」
この2つのコマンドを作ることで、アカウント間での実質的な同期が行われるため、Google Home で音声通知可能なスケジュールが実現できるようになります。
IFTTTが便利! そもそもIFTTTとはなんぞや??
今回の裏技に欠かせないIFTTTというサービス。簡単に説明すると、様々なWebサービスやアプリを連携させて自動化することができるサービスで、AというアクションをトリガーにしてBというアクションを行わせることができるという仕組みになっているので、うまく組み合わせることによって色んなことを自動化させることが出来ます。
本ブログの記事で紹介している来客通知システムもIFTTTを使ってシステムを構築しております。
Google Home 活用事例!音声による来客通知システムを作ってみました!
IFTTTについて詳しく知りたい方は
【IFTTT(イフト)が便利すぎる】 webサービスやアプリを連携して自動化できる
こちらの記事が非常に分かりやすく掲載されておりますのでご参考にしていただければと思います。
裏技の手順…の前に、一つだけ条件がある!
さて、そろそろ実際にどのような手順でこの裏技を行うかについてご説明していきたいと思うのですが、その前に、裏技を行うにあたって一つ重要な条件があります。
それは、、、
G Suite アカウント側のカレンダーの設定で、特定のユーザーと共有する際に閲覧権限を付与できること!!!!
G Suite のユーザーということはおそらく会社等で使用されているかと思いますので、ここで閲覧権限が付与できないと予定の詳細を共有することが不可能となってしまいます。。。
しかーし、諦めるのはまだ早い!!!!
G Suite のデフォルトの管理者設定において、メインカレンダーは「閲覧権限」が外部アカウントに付与できないようになっているのですが、マイカレンダーに追加したサブカレンダー(設定→カレンダーを追加→新しいカレンダー)は閲覧権限が付与できる仕様になっているので、メインカレンダーで外部アカウントに閲覧権限を付与できない方はサブカレンダーをメインカレンダーの代替で使えば実質的に今回の裏技が可能です。
※サブカレンダーの閲覧権限すらも無い場合はその時点で試合終了です。。。
ちなみに自身がG Suite管理者やビジネスオーナーで外部共有のデフォルトの権限ルールを変更したい場合は、
『G Suite の管理コンソール→アプリ→G Suite コアサービス→カレンダー→メインカレンダーの外部共有オプション→上から2番目にチェック』で変更ができます。
Googleカレンダーの設定方法
さて、今度こそ裏技の手順を紹介していきます。
まず、それぞれのGoogleカレンダーで共有設定を行います。
G Suite のカレンダーで設定画面を開き、『特定のユーザーと共有』から、プライベートアカウントのGmail アドレスを入力、閲覧権限をセットし、送信します。
次にプライベートアカウントでGoogleカレンダーにログインし、『カレンダーの追加』からG Suite のメールアドレスを入力し、カレンダーを追加します。
今度は反対にG Suite 側にプライベートアカウントのカレンダーを追加します。
プライベートアカウントのカレンダーの設定から、『特定のユーザーと共有』でG Suiteアカウントに『変更及び共有の管理権限』を付与します。
続いて、『カレンダーの統合』から、iCal非公開形式でURLをコピー、そちらをG Suite のカレンダーの設定→『新しいカレンダーを追加ーURLで追加』のURL入力欄へペーストします。
G Suite側のマイカレンダーにプライベートアカウントのカレンダーが追加されていれば設定OKです。
以上でカレンダー側の設定は終わりです。
IFTTTの設定方法
次にIFTTTで行うことを説明していきます。(アカウント登録とかは省きます)
左上メニューの My Applets → 右側の Service タグ → Google Calender を選択
この画面に遷移できたら右上の Setting → 設定画面に入り、『 Edit connection 』ボタンから接続させているGoogle カレンダーのアカウントをプライベートアカウントのものに設定します。
次に My Applets から New Applet で、今回のトリガーとアクションを設定していきます。
(2)様々なサービスの中から Google Calendar で絞り込んで選択します。
(4) どのカレンダーをトリガーにするかと聞かれるので、ここでG Suite のカレンダーを選択します。
(5) 次にアクションの設定です。 +that をクリックします。
(6) こちらもGoogle Calendarを選択します。
(7) Create a detailed event を選択します。
(8) 一番上のカレンダーの項目はプライベートアカウントのカレンダーを選択します。
それ以外の項目は下図を参考にしてください。全て項目設定したら 『Create action』をクリックします。
(9) こんな感じに設定できていればOKです。
以上で
①「G Suite のカレンダーで予定を新規作成すると、プライベートアカウントのカレンダーにも同じ予定が作成される」
の設定は終了です。
仕事等でカレンダーを使っていると自分で作成した予定ではなく、誰かから招待されるイベントもあると思います。下記はそちらの設定方法になります。(画像は省きます。)
②「G Suite のカレンダーで誰かから招待され、参加 「はい」にした予定が、プライベートアカウントのカレンダーにも同じ予定が作成される」
- 上記で使用したIFTTTのアカウントと別のアカウントでIFTTTにログインし、Googleカレンダーの連携設定でG Suite 側のアカウントと接続します。
- New Appletから、+this(トリガー) でGoogleカレンダーを選択します。
- You respond to an event invite を選択、Which Calendar?に G suite のカレンダーを選択します。
- +that(アクション)でGoogleカレンダーを選択、Create a detailed event を選択します。
- Which Calendar? に プライベートアカウントのカレンダーを選択します。
- それ以外の項目は上記の(8)を参考にして設定してみてください。
- 全て入力できたら Create action でアクションを作成します。
テストしてみよう!
IFTTTの設定まですべて完了したら、G Suite のカレンダーに予定を作成してみたり、誰かから招待を送ってもらいテストしてみましょう!
IFTTTのアクション実行はすぐには反映されないので、その場合はIFTTTで作成したAppletを選択して、下の方にある『check now』をクリックするとその瞬間に同期されます。
うまく連携ができていれば、G Suiteの予定がプライベートアカウントのカレンダーの方にも自動的に作成されているかと思います。
あとはプライベートアカウントの方をGoogle Homeと連携させれば、
「OK Google 今日の予定は??」と質問すると、きちんと予定を教えてくれるようになります。
もちろん Google アシスタントでも同様に予定を教えてくれるのでスマホにアプリが入っていれば Google Home がなくても音声で予定を教えてくれます。
ここまで手順通りに実行してもGoogle Homeがうまく喋ってくれない場合は下記リンク先記事を参考にしてみてください。
Google home がカレンダーを読み上げない、その原因は?
まとめ
今回の裏技は Google Home の機能として本来あるべき姿をhackした内容になるので、今後Google 側の仕様が見直されて G Suite アカウントのカレンダー読み上げを行ってくれるようになることが望ましいかなと思います。
IFTTTをうまく使うことで色んなことが自動化できてスマートな生活が送れるようになることが僕自身わかったのでこれから色々なことをhackしていきたいと思います。
ちなみに100%宣伝ですが、こちらのapps-gcpを運営するクラウドエースは、Google 関連のクラウド・機械学習の分野においては世界一のプロフェッショナル集団ですので。何かお困りのことや、Google Cloud にご興味がある方はぜひご相談ください!