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" ]

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

1 件のコメント:

  1. このコメントは投稿者によって削除されました。

    返信削除