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 を元に再取得されます。