2020年1月3日金曜日

FileMaker 検索条件を保存、保存した検索条件で検索を実行。SearchRequestMaker ver.2.0

FileMaker 検索条件を保存、保存した検索条件で検索を実行。
ファイル:SearchRequestMaker 一つで、複数のファイル・テーブル・レイアウトに対応。

SearchRequestMaker
Ver.2.0
検索実行・絞り込み・拡大 など連続した検索処理の保存可能

作成方法

使用方法

組み込み方法

Windows 10
FileMaker 16,17,18

Mac OS 10.13.3
FileMaker Pro 18

iOS13
FileMaker Go 18

完成品

ご支援頂ける場合、ご購入頂けると幸いです。
SearchRequestMaker.zip(500円)
Ver.2.0
https://fm-aid.stores.jp/items/5defaa7c7d31c9050a865abb
-----



検索条件の保存
検索を実行するレイアウトで検索モードに切り替え、検索値を入力
[SearchRequestMaker]ボタンをクリック

SearchRequestMakerのCardウインドウが開きます
[追加]ボタンをクリックで、現在の検索条件が保存されます
※Titleは、分かりやすいモノに変更しても構いません
※検索条件はJSONで保存されています。

検索ボタンをクリックで保存した検索条件で検索が実行されます

■■■■■
複数の検索(新規条件)の保存も可能です
-----


検索条件Set の作成
絞り込み・拡大 検索
例:Field02 検索条件「い」を保存
-----
[追加]ボタンをクリックし、フィールド:RetrievalMethod を「絞り込み」に変更

[検索条件Setを作成]ボタンをクリック
(1)(2)の順番にクリックすると、その順番に検索を実行できる検索条件が作成されます
検索条件は一時的にグローバル変数「$$SearchRequestSet」に保存されます
[登録]または、[更新]ボタンで検索条件Setが保存されます
[登録]新しく登録
[更新]現在の検索条件を更新
-----



今月・過去半年・過去1年 などの検索


日付などの検索条件を保存したJSONをコピーし、テキストエディタなどに貼り付け


日付部分を {今月} などに置き換えます

編集したJSONを「SearchRequestMaker.fmp12」のフィールド:JSONへ貼り付け


置換テーブルの設定で検索値を計算値に置き換える事ができます
例:
{今月} → LET([D = Get(CurrentDate)];Year(D) & "/" & Month ( D )& "/*")
結果:2019/12/* など
初期値では、{過去半年}・{過去1年} が設定されています
※置換デーブルは、最大256件まで登録可能
-----



ポータルの検索条件も保存可能
保存した検索条件
※検索条件は、レイアウトごとに表示されます



ファイルへの組み込み方法
例:
「personal_infomation.fmp12」と言う架空の住所録ファイルに「SearchRequestMaker」を組み込みます
-----
「personal_infomation.fmp12」(検索対象ファイル)を開き
ファイル - 管理 - 外部データソース に「SearchRequestMaker」を追加
-----
-----
「SearchRequestMaker.fmp12」を開き
スクリプトフォルダ:SearchRequestMaker をコピー

-----
「personal_infomation.fmp12」(検索対象ファイル)に貼り付け

ボタンを設置
「SearchRequestMaker.fmp12」を開き、レイアウトモードで右下のボタンをコピー

「personal_infomation.fmp12」(検索対象ファイル)のレイアウトに貼り付け
ボタンを設定
「SearchRequestMaker.fmp12」のスクリプト:Receive_Card(FileName,LayoutName)を指定
引数:Get ( ファイル名 ) & ¶ &Get ( レイアウト名 )

-----
ファイル→セキュリティー
URLによるFileMakerスクリプトの実行を許可 にチェック



以上で組み込みは完了です

ファイル「SearchRequestMaker.fmp12」1つで複数のファイルの検索条件を保存できます
-----

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