全2713文字
PR

 米Microsoft(マイクロソフト)の「Power Platform」の特集記事を企画した。プログラミングすることなくワークフローやデータ連携などを組み込んだアプリケーションを開発できるプラットフォームのことだ。

 筆者はPower Platformに精通しているとは言い難いので、今回は寄稿の形を取った。ただ「プログラミングができる記者」を自認している者としては、単に特集に書かれている内容をトレースするだけでなく、自分でも何かを作りたいという気分になる。こうしたツールは実際に何か作ってみるのが理解する一番の方法だと思うからだ。

 なかでも気になったのがSaaSなど複数のサービスを連携させるiPaaS(Integration Platform as a Service)の「Power Automate」。この機会にマイクロソフトが提供するサービスだけにとどまらず、サードパーティーのサービスと連携させてみたい。そこで試しに選んだ題材が、マイクロソフトの「Outlook」の予定表と米Google(グーグル)の「Google Calendar」の連携だ。

 せっかくなので目標としては一方向ではなく、双方向で連携させてみようと思った。うかつに作るとイベントが無限に発生してしまうので、その配慮が必要だ。

 具体的にはこうすればよい。どちらかの予定表で予定を作成すると、相手方の予定表にも新規予定を作る「フロー」を作ればよい。そして作成した際に、説明文の中に「Outlookで作った」「Google Calendarで作った」というフラグとなる文字列を埋め込んでおき、この文字列が含まれている予定だったら相手方には書き込まないというふうにすればいい。ちなみにフローとはPower Automateにおける手順書みたいなものだ。もともと「Microsoft Flow」という名称だった名残ともいえる。

プログラミング知識が乏しい人には難しいのでは……

 実際にやってみると、意外にまごつきそうな部分がいくつか見受けられた。まず、開始/終了時刻がGoogle CalendarとOutlookで形式が異なる。このため、Google CalendarからOutlookに時刻を書き込むのに、単純にその情報が取得できない。フォーマットを変換するための式を記述しなければならないのだが、変換のための関数の選択やコンテンツを取得するための関数を調べないといけない。この辺り、プログラミング経験があればどうということはないが、その経験に乏しい「エンドユーザーでもできる」といううたい文句の割には難しいのではないかと感じた。

 また、Outlookに登録済みの予定を取得するのにもとまどった。「イベントの取得」という「アクション」(サービスに何かを実行させる)には「V3」とか「V4」など複数の選択肢があって、違いがよく分からない。こういうのは大体新しい方を選んでおけばよいので「V4」とある方を選ぶ。

 すると取得するイベントを限定するのに、「OData」と呼ぶ形式で「クエリー文字列」なるものを記述しなければならない。Google Calendarで予定を変更した際、Outlook側に対応する予定があるかどうかを調べる必要がある。修正が入るのは現時点から1カ月や2カ月程度先の予定までだろう。過去分も含めて全件チェックするのはとても無駄で、これはなかなか骨が折れそうだった。

 アクションを見直してみると、その1つに「イベントのカレンダービューの取得(V3)」というのがある。駄目元で試してみたら、こちらには日付の範囲を直接指定するための箇所があった。一見して違いが分からない似たような機能が多数あるのは選択に困る。

 細かいところでは、説明に「『追加』『削除』『更新』が入る」というようなことが書いてあったのに、実際には英語の「added」「deleted」「updated」が返ってくるようなこともあった。