2019年12月26日木曜日

FileMaker 標準機能で Google Calendar 追加・編集・削除

FileMaker 標準機能で Google Calendar 追加・編集・削除
Google Calendar API v3

動作検証
Windows 10
FileMaker 16,17,18

Mac OS 10.13.3
FileMaker Pro 18

iOS13
FileMaker Go 18

有料サンプル
ご支援頂ける場合、ご購入頂けると幸いです。
https://fm-aid.stores.jp/items/5e037b41d790db3198885824
Q&A 不明な点は以下で問い合わせ下さい。
https://fm-aid.com/community/viewforum.php?id=6

準備
Google API プロジェクトの作成(2019.12.2x現在)
Google Developer Console にアクセス。
https://console.developers.google.com/

■プロジェクトの作成
(1)の部分をクリック。
 ※プロジェクトがない場合、[プロジェクトの選択]と表示されています。
(2)「新しいプロジェクト」をクリック

任意のプロジェクト名を設定し、[作成]をクリック

作成した「プロジェクト」を選択

■ライブラリ
「ライブラリ」をクリック

「Calendar」で検索
「Google Calendar API」を選択

[有効にする]をクリック

■認証情報
[認証情報]をクリック

[同意画面を構成]をクリック

[外部]を選択
[作成]をクリック

「アプリケーション名」を設定し、
[保存]をクリック


OAuth 同意画面 2021/04/05 追記

[アプリを公開]をクリック 
[確認]をクリック 2021/04/05 追記

公開ステータス が、「本番環境」でエラーとなる場合、
 テスト環境へ戻してみてください。 2022/03/07 追記
 テスト環境でエラーとなる場合、テストユーザーを追加してください。2022/05/11 追記
 (FileMakerで「[Get_AuthorizationCode]ボタンをクリック」したとき)

(2022/11/16 追記)
OAuth 同意画面
公開ステータス:本番環境 に設定



[認証情報]をクリック
[認証情報を作成]をクリック
[OAuth クライアント ID]をクリック

[その他]を選択
[作成]をクリック

「クライアント ID」
「クライアント シークレット」をコピーし、控えておく


■FileMaker(2022/11/16 追記)
ファイル:GoogleCalendarFM_Lib.fmp12 を修正してください。
スクリプト:Get_AuthorizationCode
redirect_uri=urn:ietf:wg:oauth:2.0:oob を変更
redirect_uri=http://localhost
URL を開く [ Let([ ¢URi="https://accounts.google.com/o/oauth2/auth?scope={scope}&redirect_uri=urn:ietf:wg:oauth:2.0:oob&response_type=code&client_id={ClientId}" ]; Substitute ( ¢URi ; ["{scope}" ; AppPermission::Scope] ; ["{ClientId}" ; GoogleApiProject::ClientId] ) ) ] [ ダイアログなし ]
URL を開く [ Let([ ¢URi="https://accounts.google.com/o/oauth2/auth?scope={scope}&redirect_uri=http://localhost&response_type=code&client_id={ClientId}" ]; Substitute ( ¢URi ; ["{scope}" ; AppPermission::Scope] ; ["{ClientId}" ; GoogleApiProject::ClientId] ) ) ] [ ダイアログなし ]

スクリプト:Get_Token
--data redirect_uri=urn:ietf:wg:oauth:2.0:oob を変更
--data redirect_uri=http://localhost
変数を設定 [ $Option; 値:Let( ¢option=" --request POST --data code={Authorization_Code} --data client_id={client_id} --data client_secret={client_secret} --data redirect_uri=urn:ietf:wg:oauth:2.0:oob --data grant_type=authorization_code " ; Substitute ( ¢option ; ["{Authorization_Code}" ; GLOBAL::gAuthorization_Code] ; ["{client_id}" ; GoogleApiProject::ClientId ] ; ["{client_secret}" ; GoogleApiProject::ClientSecret ] ) ) ]
変数を設定 [ $Option; 値:Let( ¢option=" --request POST --data code={Authorization_Code} --data client_id={client_id} --data client_secret={client_secret} --data redirect_uri=http://localhost --data grant_type=authorization_code " ; Substitute ( ¢option ; ["{Authorization_Code}" ; GLOBAL::gAuthorization_Code] ; ["{client_id}" ; GoogleApiProject::ClientId ] ; ["{client_secret}" ; GoogleApiProject::ClientSecret ] ) ) ]
変数を設定 [ $URi; 値:"https://accounts.google.com/o/oauth2/token" ]







■FileMaker
サンプルファイル「GoogleCalendarFM_Lib.fmp12」
レイアウト:GoogleApiProject を開く

「クライアント ID」
「クライアント シークレット」をそれぞれ設定

レイアウト:Application Permission を開く
Title:
(任意) calendar/Googleアカウント の様な入力がおすすめ
例:calendar/xxxxx@gmail.com

FMid_GoogleApiProject:
レイアウト:GoogleApiProject で作成した APIプロジェクトを選択

Scope:
https://www.googleapis.com/auth/calendar


[Get_AuthorizationCode]ボタンをクリック

ブラウザが開きます
操作するカレンダーのGoogleアカウントでログインor選択


[詳細]をクリック

[アプリ名(安全ではないページ)に移動]をクリック

[許可]をクリック

[許可]をクリック
コードをコピー
(2022/11/16 追記)
クエリパラメータ code= をコピー




FileMaker に戻り、
サンプルファイル「GoogleCalendarFM_Lib.fmp12」
レイアウト:Application Permission を開く

[Get_Token]ボタンをクリック


先程コピーしたコードを貼り付け
[OK]をクリック


「RefreshToken」「AccessToken」が取得できれば準備完了

■FileMakerからGoogle Calendar イベント、追加・編集・削除

サンプルファイル:Example_Calendar.fmp12

フィールド:GoogleCalendarFM_Lib_AppPermission_id
「GoogleCalendarFM_Lib.fmp12」で作成したレコードを設定。

必要な情報を入力して、[Insert][update][get][delete]をクリック



3 件のコメント:

  1. できた!嬉しいです!使えました! これから使い込んでみます!

    返信削除
  2. 連絡方法が無いのでこちらで失礼します。こちらのカレンダーのソフトは以前購入させていただきました。スプレッドシートの内容をファイルメーカーに連動するソフトもあったような気がしたのですがありますでしょうか?

    返信削除
  3. Googleスプレッドシートと連携するモノの公開はアリません。

    寿商会さんが簡易的にできるサンプルを公開していたと思います。(たぶん)
    https://kotovuki.co.jp/archives/13512

    返信削除