ラベル Google Calendar の投稿を表示しています。 すべての投稿を表示
ラベル Google Calendar の投稿を表示しています。 すべての投稿を表示

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]をクリック



2014年7月31日木曜日

FileMakerの標準機能だけ!?で、Google Calendar と連携できるか?

FileMaker 16,17,18 「URLから挿入(cURL)」版はコチラ。2019/12/26
https://qbxxdp.blogspot.com/2019/12/filemaker-google-calendar.html


FileMakerの標準機能だけ!?で、Google Calendar と連携できるか?
Google Calendar API v3対応。

結論:
FileMaker Go 13 > OK!
Mac FileMaker Pro 13 > OK!
Win  FileMaker Pro 13 > NG! ->OK

残念ながら、Windowsでは、無理です。(2014/07/31現在)
こちらのプラグインを使う方法で解決します。

追記:2017/02/02
以下を追加でWindowsでもOK。
jQuery.support.cors = true;


「Google Calendar API v3 を利用する準備」は、以下を参照。
http://qbxxdp.blogspot.jp/2014/07/filemakergoogle-calendargoogle-calendar_30.html


「クライアントID」と「クライアントシークレット」が取得できたらFileMakerの作業に入ります。

■アプリの利用許可~承認コードの取得
使用関数:
[URL を開く]
値:
https://accounts.google.com/o/oauth2/auth
?scope=https://www.googleapis.com/auth/calendar
&redirect_uri=urn:ietf:wg:oauth:2.0:oob
&response_type=code
&client_id={クライアントID}

■アクセストークン取得・リフレッシュトークン取得
使用関数:
[URLから挿入]
値:
httpspost://accounts.google.com/o/oauth2/token
?code={取得した承認コード}
&client_id={クライアントID}
&client_secret={クライアントシークレット}
&redirect_uri=urn:ietf:wg:oauth:2.0:oob
&grant_type=authorization_code


■リフレッシュトークン で アクセストークンを再取得
※アクセストークンは、使用期限が1時間なので、再取得が必要になります。
使用関数:
[URLから挿入]
値:
httpspost://accounts.google.com/o/oauth2/token
?client_id={クライアントID}
&client_secret={クライアントシークレット}
&refresh_token={リフレッシュトークン}
&grant_type=refresh_token

■イベント追加
※ココがポイント!Googleカレンダーにイベントを追加するには、データ送信時に アクセストークンをヘッダーに設定する必要があります。
 FileMakerの[URLから挿入:httpspost:]では、ヘッダー情報の変更が無理なので使えません。
 解決策:jQueryを使用します!
使用関数:
[Web ビューアの設定 : URLへ移動...]
値:
"data:text/html;charset=utf-8," & POST_jQuery::Script

location.href = 'fmp://$/FileName.fmp12?script=script01&$id='+msg.id;
でFileMakerにGoogleカレンダーのイベントIDを取得できます。

サンプルファイル:
https://sites.google.com/site/scriptmakerms/filemaker-faq/filemaker-google-calendar-api-v3

2014年7月30日水曜日

FileMakerからGoogle Calendarへイベント追加。Google Calendar API v3 (2)

FileMakerからGoogle Calendarへイベント追加。Google Calendar API v3使用。
http://qbxxdp.blogspot.jp/2014/07/filemakergoogle-calendargoogle-calendar.html

ニューバージョン(2014.7.29現在)。上記に加え
「承認コード取得時のコピペの省略」
「編集」
「削除」
「カレンダーリストの取得」
の機能を追加。

必要なもの:
FileMaker Pro 11 or 12 or 13
ScriptMakerPS | FileMaker Plugin for Windows
(FileMakerのフィールドに記述した「PowerShell」を実行し、戻り値を取得。)
https://sites.google.com/site/scriptmakerps/


FileMakerからGoogle Calendarへイベント追加。Google Calendar API v3 (1)と同じ内容の所があります。

Google Calendar API v3 を利用する準備。
Google Developers Console にアクセスし、プロジェクトを作成します。
Google Developers Console|https://console.developers.google.com/project

英語表記になっている場合は、Account settings で LANGUAGE を日本語に変更。

プロジェクト をクリックし、新しいプロジェクトを作成します。
私のGoogleアカウントの場合、すでに API Project と言うのがありましたが、別に一つ作成します。


[プロジェクトを作成]をクリック。


ここでは、プロジェクト名を「My Project」として進めます。
※プロジェクト名は、プロジェクト -> プロジェクト名 -> 課金と設定 で変更可能です。


「My Project」をクリック。
APIと認証
└API
で必要なAPIを有効にします。今回必要なのは、Calendar API のみなので他のAPIは無効にします。



APIと認証
└認証情報
で新しいクライアントIDを作成します。

アプリケーションの種類」は、「インストールされているアプリケーション」、
インストールされているアプリケーションの種類」は、「その他」を選択します。




「クライアント ID」 と 「クライアント シークレット」 が必要になtります。





ここからFileMakerの設定。
以下より「GCalendar_v3.fp7」をダウンロード。FMP 12 または、13の場合は、変換してください。

「ScriptMakerPS」が必要です。設定してください。(2014/7/15 現在、BETA版無料)


【新機能】
「GCalendar_v3.fp7」を開き、Google Developers Console で作成したプロジェクトの「クライアントID」と「クライアント シークレット」を設定。
[承認|Code取得(自動)|Refresh Token 取得] をクリック。



ブラウザで許可リクエストのページが開きます。
[承認する]をクリック。



自動でgOauthCodeフィールドに認証コードが入り、Refresh Token と access_token が取得されます。






[InsertEvent]をクリックし、Json_Resultフィールドにイベントデータが戻ればGoogle Calendarへのイベント登録に成功しています。




Refresh Token は、承認したGoogleアカウントで「アクセス権を取り消す」を実行するまで使用できます。access_token の有効期限は、1時間でそれを過ぎるとRefresh Token を元に再取得されます。

■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
追記:2015/12/18
フィールド:Json4Event の計算式でJSONの文字のエスケープが不足しています。
バックスラッシュ(円マーク)、タブ などの文字がある場合、エラーになります。

フィールド:Json4Event の計算式の修正版は、以下になります。
ここから-------------------------------------------------------------------
Let(
[
 ST=GetAsTime ( start.dateTime )
;$ST=Right ( "0" & Hour ( ST ) ; 2 ) & ":" & Right ( "0" & Minute ( ST
) ; 2 ) & ":" & Right ( "0" & Seconds ( ST ) ; 2 )
;ET=GetAsTime ( end.dateTime )
;$ET=Right ( "0" & Hour ( ET ) ; 2 ) & ":" & Right ( "0" & Minute ( ET
) ; 2 ) & ":" & Right ( "0" & Seconds ( ET ) ; 2 )
;$SD=Substitute ( GetAsDate ( start.dateTime ) ; ["/" ; "-"] ; ["." ; "-"]  )
;$ED=Substitute ( GetAsDate ( end.dateTime ) ; ["/" ; "-"] ; ["." ; "-"] )
]
;
""

)

 &


Substitute ( JsonTemplate::JSON ;
["" ; Substitute ( summary ; ["\\" ; "\\\\"] ; ["\"" ;
"\\\""]; [Char ( 9 ); "\t"];  ["¶" ; ""] ) ] ;
["" ; Substitute ( description  ; ["\\" ; "\\\\"] ; ["\""
; "\\\""]; [Char ( 9 ); "\t"];  ["¶" ; "\r\n"] ) ] ;
["" ; Substitute ( location ; ["\\" ; "\\\\"] ; ["\"" ;
"\\\""]; [Char ( 9 ); "\t"];  ["¶" ; ""] ) ] ;
["" ;  $SD & "T" & $ST & "+09:00" ] ;

["" ;  $ED & "T" & $ET & "+09:00" ]

)
ここまで-------------------------------------------------------------------

2014年7月15日火曜日

FileMakerからGoogle Calendarへイベント追加。Google Calendar API v3 (1)

2014.7.30|FileMakerからGoogle Calendarへイベント追加。Google Calendar API v3 (2) を公開しました。




FileMakerからGoogle Calendarへイベント追加。Google Calendar API v3使用。

必要なもの:
FileMaker Pro 11,12,13
ScriptMakerPS | FileMaker Plugin for Windows
(FileMakerのフィールドに記述した「PowerShell」を実行し、戻り値を取得。)
https://sites.google.com/site/scriptmakerps/



Google Calendar API v3 を利用する準備。
Google Developers Console にアクセスし、プロジェクトを作成します。
Google Developers Console|https://console.developers.google.com/project

英語表記になっている場合は、Account settings で LANGUAGE を日本語に変更。

プロジェクト をクリックし、新しいプロジェクトを作成します。
私のGoogleアカウントの場合、すでに API Project と言うのがありましたが、別に一つ作成します。


[プロジェクトを作成]をクリック。


ここでは、プロジェクト名を「My Project」として進めます。
※プロジェクト名は、プロジェクト -> プロジェクト名 -> 課金と設定 で変更可能です。


「My Project」をクリック。
APIと認証
└API
で必要なAPIを有効にします。今回必要なのは、Calendar API のみなので他のAPIは無効にします。



APIと認証
└認証情報
で新しいクライアントIDを作成します。

アプリケーションの種類」は、「インストールされているアプリケーション」、
インストールされているアプリケーションの種類」は、「その他」を選択します。




「クライアント ID」 と 「クライアント シークレット」 が必要になtります。





ここからFileMakerの設定。
以下より「GCalendar_v3.fp7」をダウンロード。FMP 12 または、13の場合は、変換してください。

「ScriptMakerPS」が必要です。設定してください。(2014/7/15 現在、BETA版無料)



「GCalendar_v3.fp7」を開き、Google Developers Console で作成したプロジェクトの「クライアントID」と「クライアント シークレット」を設定。
[承認|Code取得] をクリック。


ブラウザで許可リクエストのページが開きます。
[承認する]をクリック。


コードをコピーし、FileMaker 「GCalendar_v3.fp7」に設定します。


gOauthCodeフィールドに上記で取得したコードを貼り付けます。
[Refresh Token 取得] をクリックすると Refresh Token と access_token が取得されます。



[InsertEvent]をクリックし、Json_Resultフィールドにイベントデータが戻ればGoogle Calendarへのイベント登録に成功しています。




Refresh Token は、承認したGoogleアカウントで「アクセス権を取り消す」を実行するまで使用できます。access_token の有効期限は、1時間でそれを過ぎるとRefresh Token を元に再取得されます。