NoCode J Works

Innovation in the workplace.

SampleAppsで学ぶFileMaker[スクリプトについて]

f:id:BeansWorks:20210907091553p:plain

「イベント管理.fmp12」のスクリプトメニューで「スクリプトについて...」という項目を選択できるようになっています。

f:id:BeansWorks:20190711223755p:plain 

 

これは「スクリプトワークスペース」でチェックマークをオンにするとメニューに表示される仕様になっています。

f:id:BeansWorks:20190711223816p:plain

 

スクリプトの内容は以下の様になっています。

f:id:BeansWorks:20190711223845p:plain

 

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー 

ユーザによる強制終了を許可[オフ]

  →Escキー等でユーザーがスクリプトの途中で強制終了できないようにする為にオフにしています。これをオンにするとウインドウを閉じるボタン(ウインドウ右上のバツ印)が表示されダイアログを強制的に消すことが可能になります。

 

If Filter ( Get ( システムプラットフォーム ) ; "34" )

Filter関数は「フィルタするテキスト」の中に「フィルタテキスト」と同じテキストが存在する場合、値を返します。

Filter ( フィルタするテキスト ; フィルタテキスト )

Get (システムプラットフォーム)関数が返す値は次のとおりです。

「1」・・・現在のプラットフォームが Intel ベースの Mac の場合

「-2」・・・プラットフォームが Windows の場合

「3」・・・現在のプラットフォームが iOS の場合

「4」・・・ プラットフォームが FileMaker WebDirect の場合

 

したがって、上記スクリプトは「実行しているプラットフォームがiOSかWebの場合」とそれ以外の場合で分岐させ、この場合は下記カスタムダイアログを2種類準備した上で、条件により切り替えて違うカスタムダイアログを表示させています。

 

   カスタムダイアログを表示["スクリプトについて";

   "FileMaker Pro のコマンドリスト(スクリプトステッ...]

 Else

   カスタムダイアログを表示["スクリプトについて";

   "FileMaker Pro のコマンドリスト(スクリプトステッ...]

 End If

Get ( 最終メッセージ選択 )

 

「1」・・・最初のボタン(デフォルトでは [OK] ボタン)がクリックされた場合

「2」・・・2番目のボタン(デフォルトでは [キャンセル] ボタン)がクリックされた場合

「3」・・・3番目のボタンがクリックされた場合

 

f:id:BeansWorks:20190711224316p:plain

f:id:BeansWorks:20190711224032p:plain

カスタムメッセージを表示させた後に、クリックしたボタンによって挙動を変えています。

 

 If [ Get (最終メッセージ選択) = 1]

   スクリプトワークスを開く

 Else If [ Get (最終メッセージ選択) = 2]

   ヘルプを表示

 End If

 

SampleAppsで学ぶFileMaker[写真オブジェクト表示]

f:id:BeansWorks:20210907091553p:plain

「イベント管理.fmp12」の連絡先詳細レイアウトでは顔写真を貼り付けるオブジェクトフィールドが配置されていますので、このフィールドに写真をドラッグすると写真が貼り付きます。

f:id:BeansWorks:20190703222629p:plain

 

ただ、通常はフィールドを配置しただけだと無地になっています。これでももちろん機能的には問題ありませんが、サンプルでは顔写真をイメージした絵を表示してよりわかりやすいビジュアルですね。これはオブジェクトフィールドを透明化して、背面に人物アイコンを表示したボタンを配置することで表現することが可能です。

f:id:BeansWorks:20190703222738p:plain

 

 

  

 

SampleAppsで学ぶFileMaker[レイアウト切り替え]

f:id:BeansWorks:20210907091553p:plain

「イベント管理.fmp12」のイベントレイアウトでの各ボタンの機能を解説します。

[連絡先]ボタン

f:id:BeansWorks:20190701232935p:plain

[連絡先]ボタンには単一ステップでレイアウト切り替えが設定されています。

f:id:BeansWorks:20190701232910p:plain

 

[期間]ボタン

f:id:BeansWorks:20190701232957p:plain

[期間]ボタンにはスクリプトトリガ「OnObjectValidate」で「トリガ|イベント一覧をソート[Getスクリプト引数]」を設定しています。

「OnObjectValidate」:選択されたフィールドのデータが変更された場合にアクティベートされます。

 

トリガ|イベント一覧をソート[Getスクリプト引数]

f:id:BeansWorks:20190624235503p:plain

『1行目』

変数を設定[$$PLATFORM;値:Get(スクリプト引数)]

スクリプト引数を変数として取得します。

f:id:BeansWorks:20190624235636p:plain

 

If [$$SCRIPT_TRIGGER="オフ"]

変数を設定[$$SCRIPT_TRIGGER;値:"オン"]

現在のスクリプト終了[テキスト結果: ]

End If

グローバル変数を切り替えとして使用して、スクリプトがトリガされるのを停止します。

f:id:BeansWorks:20190624235522p:plain

 

変数を設定[$$GO_BACK_LAYOUT;値:""]

If [イベント::選択内容のソート="期間"]

 レコードのソート[記憶する;ダイアログあり:オフ]

Else If [イベント::選択内容のソート="イベント"]

 レコードのソート[記憶する;ダイアログあり:オフ]

Else

 レコードのソート[記憶する;ダイアログあり:オフ]

End If

ウインドウのスクロール[Home]

→検索を実行してソートし、ウインドウの一番上にスクロールします。

  

 

スライドコントロールをボタンで切り替える

f:id:BeansWorks:20210907091553p:plain

スライドコントロールはタブコントロール機能と同様に、スライドを追加して切り替えることができるので、見やすいレイアウトを作ることができます。

スライドコントロールの切り替えは、ナビゲーションドットやスワイプで可能ですが、直接ではなく、ボタンの操作でも、目的のパネルを表示することができます。

 

1.まず各スライドに[名前]を付けておきます。

f:id:BeansWorks:20190620223626p:plain

 

2.ボタンに[オブジェクトへ移動]スクリプトステップの移動先を各スライドの名前を指定します。

f:id:BeansWorks:20190620223742p:plain

 

Sample Appsで学ぶスクリプト【イベント管理】

f:id:BeansWorks:20210907093146p:plain

FileMakerにはすぐに使用できる16のサンプルアプリが収録されています。今回は「イベント管理」アプリをお手本にしてスクリプトを学んでいきましょう。

About This Apps

イベント管理

・イベント詳細、ゲスト一覧、および予定を管理するサンプルアプリです。各イベントについて協力者にタスクを割り当ててからレポートを作成して印刷または電子メールで送信します。

f:id:BeansWorks:20190524053003p:plain

 

イベント管理で使用されているスクリプトf:id:BeansWorks:20190524053419p:plain

 

スクリプトワークスペース

このスクリプトについて

スクリプトについて...」スクリプトの内容については以下の内容になっています。

このスクリプトはメニュー表示がオンになっており、メニューから選択することに

なっています。

f:id:BeansWorks:20190524053047p:plain

f:id:BeansWorks:20190524053342p:plain

 

では個別に機能を見ていきましょう。

f:id:BeansWorks:20190524053419p:plain

 ユーザによる強制終了を許可[オフ]

 →Escキー等でユーザーがスクリプトの途中で強制終了できないようにする為に

  オフにしています。これをオンにするとウインドウを閉じるボタン(ウインド

  ウ右上のバツ印)が表示されダイアログを強制的に消すことが可能になります。

 

Filter ( Get ( システムプラットフォーム ) ; "34" )

Filter関数は「フィルタするテキスト」の中に「フィルタテキスト」と同じテキストが

存在する場合、値を返します。

Filter ( フィルタするテキスト ; フィルタテキスト )

 

Get (システムプラットフォーム)関数が返す値は次のとおりです。

「1」・・・現在のプラットフォームが Intel ベースの Mac の場合

「-2」・・・プラットフォームが Windows の場合

「3」・・・現在のプラットフォームが iOS の場合

「4」・・・ プラットフォームが FileMaker WebDirect の場合

 

したがって、上記スクリプトは「実行しているプラットフォームがiOSかWebの場合」とそれ以外の場合で分岐させ、この場合は下記カスタムダイアログを2種類準備した上で、条件により切り替えて違うカスタムダイアログを表示させています。

 

   カスタムダイアログを表示["スクリプトについて";

   "FileMaker Pro のコマンドリスト(スクリプトステッ...]

 Else

   カスタムダイアログを表示["スクリプトについて";

   "FileMaker Pro のコマンドリスト(スクリプトステッ...]

 End If

 

f:id:BeansWorks:20190524053531p:plain

 

f:id:BeansWorks:20190524053617p:plain

 Get ( 最終メッセージ選択 )

 

「1」・・・最初のボタン(デフォルトでは [OK] ボタン)がクリックされた場合

「2」・・・2番目のボタン(デフォルトでは [キャンセル] ボタン)がクリックされた場合

「3」・・・3番目のボタンがクリックされた場合

 

カスタムメッセージを表示させた後に、クリックしたボタンによって挙動を変えています。

 If [ Get (最終メッセージ選択) = 1]

   スクリプトワークスを開く

 Else If [ Get (最終メッセージ選択) = 2]

   ヘルプを表示

 End If

 

 ---------------------------------------------------------------------------------------

PDFを生成

f:id:BeansWorks:20190528212843p:plain

『1行目』

エラー処理[オン]

→エラー表示をオンにすると標準の警告メッセージが表示されないようになります。

 

『3行目』

#イベントのレポートを保存

→文の先頭に#を入れるとコメントを追加することができます。

 

『4行目』

新規ウインドウ[スタイル:ドキュメント;使用するレイアウト:<現在のレイアウト>;

→現在と同じレイアウトで新規ウインドウを開きます。

上:Get( スクリーン高さ);左:Get(スクリーン幅)]

→新規ウインドウの高さと幅を指定しています

レイアウト切り替え[「イベントレポート」(イベント);アニメーション:なし]

→レイアウトを「イベントレポート」に切り替えます。

レコードをPDFとして保存[記憶する;ダイアログあり:オフ;「$$PATH」;

現在のレコード;ディレクトリの作成:オフ]

→PDFを指定の場所に保存します。(変数$$PATHは別途指定している。)

ウインドウを閉じる[現在のウインドウ]

→ウインドウを閉じます。

 

『9行目』

#協力者一覧を保存して添付

関連レコードへ移動[関連レコードのみを表示;テーブル:「協力者」;

使用するレイアウト:「協力者一覧」(協力者);新規ウインドウ]

If [Get(最終エラー)=0]

→上記「関連レコードのみを表示」でエラーが無い(データが存在する)場合は

 以下のステップに進む。

  レコードのソート[記憶する;ダイアログあり:オフ]

  レコードをPDFとして保存[記憶する;追加;ダイアログあり:オフ;「$$PATH」;

  対象レコード;ディレクトリの作成:オフ

  ウインドウを閉じる[現在のウインドウ]

 

『17行目以降』

→各種レポートを同様に出力するスクリプトです。(データが無い時は出力なし)

 

イベントレポートをPDFで保存 

エラー処理[オン]

f:id:BeansWorks:20190528213308p:plain

変数を設定[$$PATH;

f:id:BeansWorks:20190528213133p:plain

値:Get(ドキュメントパス)&イベント::イベント&".pdf""]

f:id:BeansWorks:20190528213218p:plain

Get(ドキュメントパス)はWindows では /ドライブ名/Users/ユーザ名/ドキュメント/

OS X では、パス形式は /ドライブ名/ユーザ/ユーザ名/ドキュメント/ になります。

「イベント::イベント」は「イベント」テーブルの「イベント」フィールド名を取得して

ファイル名として追加します。

スクリプト実行[指定:一覧から;「PDFを生成」;引数: ]

→あらかじめ作成してある「PDFを生成」スクリプトを実行します。

 引数は使っていません。

 

Eventを送信[「aevt」;「odoc」;「$$PATH」]

→$$PATHを指定して作成したPDFを開きます。

 

イベントレポートを協力者に送信

f:id:BeansWorks:20190531010954p:plain

『1行目』

エラー処理[オン]

→エラー表示をオンにすると標準の警告メッセージが表示されないようになります

 

『3行目』

変数を設定[$RECEIPTS;値:List(協力者::電子メール)]

→$RECEIPTSでメールアドレスをList関数で取得しています。

 (List関数ではフィールド内の空白を除く値の連結一覧を返します)

 

『4行目』

変数を設定[$$PATH;

値:Get(テンポラリパス)&イベント::イベント&".pdf"]

→「イベント」項目に入力されている名前を付けてPDFで一時保存する変数を

 指定しています。(変数は次のステップで使います。)

 

『6行目』

スクリプト実行[指定:一覧から;「PDFを生成」;引数: ]

→あらかじめ作成している「PDFを生成」スクリプトを呼び出しています。

 

『7行目』

メールを送信[電子メールクライアント経由で送信;ダイアログあり:オン;

宛先:$RECEIPTS;

トピック:イベント::種類&":”&イベント::イベント&"@"&イベント::場所...;

メッセージ:"協力者様、¶¶下記イベントのレポートを添付します:¶¶" & イベント::...;

「$$PATH」]

→電子メールクライアントを起動後、PDFファイルを添付し、メールアドレス、タイトル、

 本文を付けて文書を作成します。

 

ゲストに予定を送信

f:id:BeansWorks:20190611230207p:plain

『1行目』

エラー処理[オン]

→エラー表示をオンにすると標準の警告メッセージが表示されないようになります

 

ポップオーバーを閉じる

スクリプトステップを実行しているウインドウで、開いているポップオーバーを閉じます。

 

変数を設定[$PATH;値:Get(テンポラリパス)&イベント::イベント&"予定.pdf"]

→「イベント」項目に入力されている名前を付けてPDFで一時保存する変数を

 指定しています。(変数は次のステップで使います。)

 

If[ValueCount(List(ゲスト::電子メール))>=100]

 カスタムダイアログを表示["電子メールを送信中";

 "プロバイダーによっては、電子メールを一度に100ヶ所以上へ送信することができません。"]

 

 If [Get(最終メッセージ選択)=2]

  全スクリプト終了

 End If

End If

→宛先が100ヶ所以上の場合はエラー防止の為、送信しないようにしています。

 

関連レコードへ移動[関連レコードのみを表示;テーブル:「予定」;使用するレイアウト:「予定」(予定);新規ウインドウ]

If [Get(最終エラー)= 0 ]

 レコードのソート[記憶する;ダイアログあり:オフ]

 レコードをPDFとして保存[記憶する;ダイアログあり:オフ;「$PATH」;対象レコード;ディレクトリの作成:オフ]

 ウインドウを閉じる[現在のウインドウ]

End If

 

Get(最終エラー)= 0はエラーがない場合になります。

FileMaker Error Code

https://fmhelp.filemaker.com/help/16/fmp/ja/index.html#page/FMP_Help/error-codes.html

 

関連レコードへ移動[関連レコードのみを表示;テーブル:「ゲスト」;使用するレイアウト:「ゲスト一覧」(予定);新規ウインドウ]

If [Get(最終エラー)= 101 ]

  全スクリプト終了

End If

→Get(最終エラー)= 101はレコードが見つからない場合になります。

 

メールを送信[電子メールクライアント経由で送信;ダイアログあり:オン;

宛先:ゲスト::電子メール;トピック:イベント::イベント;

メッセージ:"イベントの予定を添付します:¶¶" & イベント::イベント& ¶ & イ...;

「$PATH」]

 

→電子メールクライアントを起動後、PDFファイルを添付し、メールアドレス、タイトル、本文を付けて文書を作成します。

 

ウインドウを閉じる[現在のウインドウ]

レコード/検索条件確定[ダイアログあり:オン]

 

割り当てられたタスク一覧を連絡先に送信

f:id:BeansWorks:20190603215837p:plain

『1行目』

エラー処理[オン]

→エラー表示をオンにすると標準の警告メッセージが表示されないようになります

 

『3行目』

変数を設定[$PATH;

値:Get(テンポラリパス)& イベント::イベント&”タスク一覧.pdf]

→「イベント」項目に入力されている名前を付けてPDFで一時保存する変数を

 指定しています。(変数は次のステップで使います。)

 

『5行目』

関連レコードへ移動[関連レコードのみを表示;

テーブル:「割り当てられたタスク一覧 |タスク」;

使用するレイアウト:「割り当てられたタスク一覧」(タスク);新規ウインドウ]

レコードのソート[記憶する;ダイアログあり:オフ]

→ポータルのテーブル(関連テーブル)内の関連レコードが現在のレコードになります。

 

『8行目』

レコードをPDFとして保存[記憶する;ダイアログあり:オフ;「$PATH」;対象レコード;

ディレクトリの作成:オフ]

→「$PATH」で指定している場所にポータル内の関連レコードをPDFとして保存します。

 

『10行目』

ウインドウを閉じる[現在のウインドウ]

 

『12行目』

メールを送信[電子メールクライアント経由で送信;ダイアログあり:オン;

宛先:連絡先::連絡先名前&”<”&連絡先::自宅メール&”>”;

トピック:Get(ファイル名)&” |タスク一覧”;

メッセージ:連絡先::連絡先名前&”様、¶”&”あなたのタスク一覧を添付します...;

「$PATH」]

→電子メールクライアントを起動後、PDFファイルを添付し、メールアドレス、タイトル、

 本文を上記設定で付与して文書を作成します。

---------------------------------------------------------------------------------------

 スライドパネルナビゲーション[Getスクリプト引数]

f:id:BeansWorks:20190603220135p:plain

レイアウトオブジェクトアニメーション設定[オン]

スクリプトの実行中にアニメーションを有効にします。

 

変数を設定[$$ACTIVE_BUTTON;値:Get(スクリプト引数)&”ボタン”]

→「$$ACTIVE_BUTTON」という名称で変数を指定します。変数は他のステップで

  使用します。

 

オブジェクトへ移動[オブジェクト名:Get(スクリプト引数)]

→ボタンオプションのプロパティで設定した「オプション引数」を

 取得して、当該のオブジェクトに移動します。

 

 

---------------------------------------------------------------------------------------

 イベント一覧に戻る

f:id:BeansWorks:20190603221512p:plain

『1行目』

変数を設定[$$SCRIPT_TRIGGER;値;”オフ”]

スクリプトトリガ用の変数をしています。

*1 スクリプトトリガ

 

 

 

『3行目』

If [$$PLATFORM ≠ ”デスクトップ/web”]

  スクリプト実行[指定:一覧から;「トリガ|レコードの編集を終了|モバイル」;

  引数: ]

End If

→変数$$PLATFORMは別のトリガで指定しています。

 Choose           (Get ( デバイス ) ;"デスクトップ/Web" ;"デスクトップ/Web" ;

 "デスクトップ/Web" ;"タブレット" ;"電話" ;"タブレット")

 

『7行目』

If[$$PLATFORM = ”デスクトップ/web”]

  レイアウト切り替え[「イベント(イベント);アニメーション:なし」]

Else If[$$PLATFORM = ”タブレット”]

  レイアウト切り替え[「イベント|タブレット(イベント);アニメーション:なし」]

Else If[$$PLATFORM = ”電話”]

  レイアウト切り替え[「イベント|電話(イベント);アニメーション:なし」]

End If

→プラットフォームに合わせてレイアウトを切り替えています。

 

 *2 Get(デバイス)

 

連絡先一覧に戻る

f:id:BeansWorks:20190603221723p:plain

『1行目』

変数を設定[$$SCRIPT_TRIGGER;値;”オフ”]

スクリプトトリガ用の変数をしていしています。

スクリプトトリガとはイベントの発生時にスクリプトを実行するように指定することです。

 例えば、別のフィールド入力された内容を元にデータがフィールドに自動入力されるスクリ

 プトを実行することが可能です。

 

If [$$PLATFORM = "デスクトップ/web"]

  レイアウトを切り替え[「連絡先」(連絡先);アニメーション:なし]

Else If [$$PLATFORM = "タブレット"]

  レイアウトを切り替え[「連絡先」|タブレット(連絡先);アニメーション:なし]

Else If [$$PLATFORM = "タブレット"]

  レイアウトを切り替え[「連絡先」|電話(連絡先);アニメーション:なし]

End If

→プラットフォームによって切り替え先を変えています。

 

一覧にある全てのレコードを表示する

f:id:BeansWorks:20190603235634p:plain



『1行目』

フィールド設定[イベント::クイック検索;””]

全レコードを表示

→検索をリセットして全レコードを表示させます。

 

『5行目』

If [PatternCount(Get(レイアウト名);”イベント”)]

  スクリプト実行[指定:一覧から;

  「トリガ|イベント一覧をソート[Get スクリプト引数];引数:$$PLATFORM]

Else If [PatternCount(Get(レイアウト名);”住所録”)]

  スクリプト実行[指定:一覧から;

  「トリガ|連絡先をソート[Get スクリプト引数]」;引数:$$PLATFORM]

→プラットフォームによって切り替え先を変えています。

 

 

---------------------------------------------------------------------------------------

協力者を追加[+]

f:id:BeansWorks:20190610214701p:plain

『1行目』

変数を設定[$$ACTIVE_BUTTON;値;”協力者ボタン”]

→アクティブなボタンバーをリセットしています。

 

『4行目』

If [$$PLATFORM ≠ "デスクトップ/web"]

  スクリプト実行[指定:一覧から;「トリガ|レコードの編集を終了|モバイル」;

  引数: ]

End If

→プラットフォームがデスクトップ/web以外の場合は編集を終了します。

 

『8行目』

If [$$PLATFORM = "デスクトップ/web"]

  レコード/検索条件確定[ダイアログあり:オン]

  フィールドへ移動[協力者::協力者名前]

  ポータル内の行へ移動[選択:オフ;最後の]

  オブジェクトの更新[オブジェクト名:”ナビゲーションボタンバー”;繰り返し:1]

  ポータルの更新[オブジェクト名:”協力者ポータル”]

  全スクリプト終了

Else If[$$PLATFORM = "タブレット"]

  レイアウト切り替え[「協力者詳細|タブレット」(協力者);アニメーション:なし]

Else If[$$PLATFORM = "電話"]

  レイアウト切り替え[「協力者詳細|電話」(協力者);アニメーション:なし]

 

『21行目』

新規レコード/検索条件

 

『23行目』

レコード/検索条件確定[入力値の制限を無視;ダイアログあり:オフ]

 

協力者を連絡先に追加する[+]

f:id:BeansWorks:20190610215911p:plain

『1行目』

#協力者の情報を収集して新規契約書を作成(連絡先情報フィールド>計算値自動入力を参照)

変数を設定[$$CONTRIBUTOR_FIRST;値: LeftWords(協力者::協力者名;1)]

変数を設定[$$CONTRIBUTOR_LAST;値: MiddleWords(協力者::協力者名;2;999)]

変数を設定[$$CONTRIBUTOR_PHONE;値: 協力者::電話番号]

変数を設定[$$CONTRIBUTOR_EMAIL;値: 協力者::電子メール]

 

→「連絡先」テーブルのオプションで上記項目は計算値自動入力になっています。

f:id:BeansWorks:20190610220018p:plain

 

→自動入力する値はここで指定する変数になっています。

f:id:BeansWorks:20190610220034p:plain

ウインドウの固定

 

『9行目』

If [$$PLATFORM = "デスクトップ/Web"]

  #新規ウインドウをオフスクリーンで作成

  新規ウインドウ[スタイル:ドキュメント;使用するレイアウト:<現在のレイアウト>;上:9999;左:9999]

End If

レイアウト切り替え[「連絡先一覧」(連絡先);アニメーション:なし]

新規レコード/検索条件

→非表示の新規ウインドウでレイアウトを連絡先に切り替えて新規レコードを実行することで

 変数で定義したデータをコピーしています。

 

『17行目』

変数を設定[$CURRENT_CONTACT_ID;値:連絡先::連絡先 ID 照合フィールド]

 

『19行目』

If [$$PLATFORM = "デスクトップ/Web"]

  ウインドウを閉じる[現在のウインドウ]

Else

  レイアウト切り替え[元のレイアウト;アニメーション:なし]

End If

 

『25行目』

#協力者の連絡先IDを連絡先の既存連絡先IDに設定する(ある場合)

フィールド設定[協力者::連絡先ID照合フィールド;連絡先|検索された連絡先::連絡先ID照合フィールド]

 

『28行目』

#協力者の連絡先写真を連絡先の既存連絡先写真に設定する(ある場合)

フィールド設定[連絡先|検索された連絡先::写真|オブジェクト;協力者::写真|オブジェクト]

 

『31行目』

カスタムダイアログを表示["連絡先を追加しました";"協力者"&協力者::協力者名前&"を連絡先一覧に追加しました。"]

 

タスクを追加[+]

f:id:BeansWorks:20190610220158p:plain

『1行目』

#[編集]ボタンを元の状態に戻す

If [$$PLATFORM ≠"デスクトップ/Web"]

  スクリプト実行[指定:一覧から;「トリガ|レコードの編集を終了|モバイル」;

  引数: ]

End If

 

『6行目』

If[$$PLATFORM = "デスクトップ/Web"]

  レコード/検索条件確定[ダイアログあり:オン]

  フィールドへ移動[タスク::タスク]

  ポータル内の行へ移動[選択;オフ;最後の]

  ポータルの更新[オブジェクト名:”タスクポータル”]

  全スクリプト終了

 

『12行目』

Else If[$$PLATFORM="タブレット"]

  レイアウト切り替え[「タスク詳細|タブレット」(タスク);アニメーション:なし]

Else If[$$PLATFORM="電話"]

  レイアウト切り替え[「タスク詳細|電話」(タスク);アニメーション:なし]

End If

 

『18行目』

新規レコード/検索条件

 

『20行目』

レコード/検索条件確定[入力値の制限を無視;ダイアログあり:オフ]

 

予定項目を追加[+]

f:id:BeansWorks:20190611230721p:plain

『1行目』

#[編集]ボタンを元の状態に戻す

If [$$PLATFORM ≠"デスクトップ/Web"]

スクリプト実行[指定:一覧から;「トリガ|レコードの編集を終了|モバイル」;

引数: ]

 

『6行目』

If[$$PLATFORM = "デスクトップ/Web"]

レコード/検索条件確定[ダイアログあり:オン]

ポータル内の行へ移動[選択:オフ;最後の]

ポータルの更新[オブジェクト名:”予定ポータル”]

スクリプト終了

Else If[$$PLATFORM =”タブレット”]

レイアウト切り替え[予定詳細|タブレット](予定);アニメーション:なし]

Else If[$$PLATFORM =”電話”]

レイアウト切り替え[予定詳細|電話](予定);アニメーション:なし]

End If

 

新規レコード/検索条件

 

レコード/検索条件確定[入力値の制限を無視;ダイアログあり:オフ]

 

ゲストを追加[+]

f:id:BeansWorks:20190611230804p:plain

『1行目』

#[編集]ボタンを元の状態に戻す

If [$$PLATFORM ≠"デスクトップ/Web"]

スクリプト実行[指定:一覧から;「トリガ|レコードの編集を終了|モバイル」;

引数: ]

 

『6行目』

If[$$PLATFORM = "デスクトップ/Web"]

レコード/検索条件確定[ダイアログあり:オン]

フィールドへ移動[ゲスト::ゲスト名前]

ポータル内の行へ移動[選択:オフ;最後の]

ポータルの更新[オブジェクト名:”ゲストポータル”]

スクリプト終了

Else If[$$PLATFORM =”タブレット”]

レイアウト切り替え[ゲスト詳細|タブレット](予定);アニメーション:なし]

Else If[$$PLATFORM =”電話”]

レイアウト切り替え[ゲスト詳細|電話](予定);アニメーション:なし]

End If

 

新規レコード/検索条件

 

レコード/検索条件確定[入力値の制限を無視;ダイアログあり:オフ]

 

---------------------------------------------------------------------------------------

ファイルからゲストをインポート

 このスクリプトは「ゲスト」タブのポップオーバーボタンに設定されています。

f:id:BeansWorks:20190611232246p:plain

f:id:BeansWorks:20190611232315p:plain

『1行目』

ポップオーバーを閉じる

ウインドウの固定

変数を設定[$$CURRENT_EVENT_ID;値:イベント::イベントID照合フィールド]

#新規ウインドウをオフスクリーンで作成

新規ウインドウ[スタイル:ドキュメント;使用するレイアウト:<現在のレイアウト>;

上:9999;左:9999]

レイアウト切り替え[「ゲスト一覧」(ゲスト);アニメーションなし]

ユーザーによる強制終了を許可[オフ]

『8行目』

レコードのインポート[ダイアログあり:オン]

→ダイアログでインポートしたいファイルを選択してテーブルの項目と紐づけしてインポート

 します。

 

ウインドウを閉じる[現在のウインドウ]

スクリプト実行[指定:一覧から;「トリガ|レイアウト入力時[Getスクリプト引数]」;

引数:”Guests Button”]

レコード/検索条件確定[ダイアログあり:オン]

 

ゲストをファイルへエクスポート

このスクリプトは「ゲスト」タブのポップオーバーボタンに設定されています。

f:id:BeansWorks:20190611232522p:plain

f:id:BeansWorks:20190611232506p:plain

『1行目』

ポップオーバーを閉じる

ウインドウの固定

#新規ウインドウをオフスクリーンで作成

関連レコードへ移動[関連レコードのみを表示;テーブル:「ゲスト」;

使用するレイアウト:「ゲスト一覧」(ゲスト);新規ウインドウ]

ユーザによる強制終了を許可[オフ]

レコードのエクスポート[ダイアログあり:オフ;ディレクトリの作成:オフ;

UnicodeUTF-16)]

→ウインドウが開いたらファイルの種類・ファイル名・出力先を指定してデータをエクスポートする。

f:id:BeansWorks:20190611232556p:plain

ウインドウを閉じる[現在のウインドウ]

レコード/検索条件確定[ダイアログあり:オン]

 

すべてのゲストを消去

このスクリプトは「ゲスト」タブの消去ボタンに設定されています。 

f:id:BeansWorks:20190611232806p:plain

『1行目』

ウインドウの固定

レコード/検索条件確定[ダイアログあり:オン]

カスタムダイアログを表示[”消去”&イベント::ゲスト番号|全て&” ”...;

イベント::ゲスト番号|全て&” ”& イベント::複数ゲストラベル& ”をすべてー...]

If [Get(最終メッセージ選択)=1]

 全スクリプト終了

End If

→Get(最終メッセージ選択)が返す値は次のとおりです。

  • 「1」 - 最初のボタンがクリックされた場合
  • 「2」 - 2 番目のボタンがクリックされた場合
  • 「3」 - 3 番目のボタンがクリックされた場合

→このサンプルでは1は「キャンセル」なのでスクリプトが終了します。

 

関連するレコードへ移動[関連レコードのみを表示;テーブル:「ゲスト」;

使用するレイアウト:「ゲスト一覧」(ゲスト);新規ウインドウ]

レイアウト切り替え[「ゲスト一覧」(ゲスト);アニメーション:なし]

対象レコード削除[ダイアログあり:オフ]

ウインドウを閉じる[現在のウインドウ]

→「消去」ボタンがクリックされた時は対象のデータを削除します。

f:id:BeansWorks:20190611232828p:plain

 

イベント項目を削除[Getスクリプト引数]

f:id:BeansWorks:20190611233023p:plain

このスクリプトは各タブのゴミ箱ボタンに設定されています。

f:id:BeansWorks:20190611233111p:plain

『1行目』

エラー処理[オン]

カスタムダイアログを表示[”確認”;

Get ( スクリプト引数 ) & " を完全に削除しますか?¶削除は元に戻せません。"]

If [Get(最終メッセージ選択)=1]

 ポータル内の行を削除[ダイアログあり:オフ]

End If

レコード/検索条件確定[入力値の制限を無視;ダイアログあり:オフ]

→ボタン設定で「オプションの引数」で設定したスクリプト引数をダイアログに

 表示しています。

f:id:BeansWorks:20190611233129p:plain

 

選択した協力者を表示する|イベント協力者

このスクリプトは協力者タブの連絡先(人物アイコン)移動ボタンに設定されています。

f:id:BeansWorks:20190612215421p:plain

f:id:BeansWorks:20190612215301p:plain

『1行目』

#[戻る]ボタンの移動先を設定

変数を設定[$$GO_BACK_LAYOUT;値:Get(レイアウト名)]

If [$$PLATFORM="デスクトップ/Web"]

→連絡先詳細のレイアウトから[戻る]時にボタンを表示させる為に変数を取得しています。 

f:id:BeansWorks:20190612215451p:plain

関連するレコードへ移動[テーブル:「連絡先」;

使用するレイアウト:「連絡先詳細」(連絡先)]

Else

 変数を設定[$$GO_BACK_LAYOUT_ADDITIONAL;値:イベント::イベント]

 変数を設定[$$SCRIPT_TRIGGER;値:オフ]

 関連レコードへ移動[テーブル:「連絡先」;

 使用するレイアウト:”連絡先詳細|”&$$PLATFORM]

End If

 

*3Get (ウインドウモード)

選択したイベントを表示する|イベント協力者

このスクリプトは協力者としてのイベントタブに設定されています。

f:id:BeansWorks:20190612220025p:plain

f:id:BeansWorks:20190612220036p:plain

『1行目』

#[戻る]ボタンの移動先を設定

変数を設定[$$GO_BACK_LAYOUT;値:Get(レイアウト名)]

If [$$PLATFORM="デスクトップ/Web"]

→イベント詳細のレイアウトから[戻る]時にボタンを表示させる為に変数を取得しています。

 

 関連するレコードへ移動[テーブル:「イベント」;

 使用するレイアウト:「イベント詳細」(イベント)]

Else

#[戻る]ボタンを追加情報でカスタマイズ

 変数を設定[$$GO_BACK_LAYOUT_ADDITIONAL;値:連絡先::連絡先名前]

#スクリプトトリガの実行を防ぐ

 変数を設定[$$SCRIPT_TRIGGER;値:オフ]

 関連レコードへ移動[テーブル:「イベント」;

 使用するレイアウト:”イベント|”&$$PLATFORM]

 スクリプト実行[指定:一覧から;「選択したイベントに移動|モバイル」;

 引数: ]

End If

 

選択したタスクを表示する|割り当てられたタスク

このスクリプトは「割り当てられたタスク」タブに設定されています。

f:id:BeansWorks:20190612220140p:plain

f:id:BeansWorks:20190612220156p:plain

『1行目』

#[戻る]ボタンの移動先を設定

変数を設定[$$GO_BACK_LAYOUT;値:Get(レイアウト名)]

If [$$PLATFORM="デスクトップ/Web"]

→イベント詳細のレイアウトから[戻る]時にボタンを表示させる為に変数を取得しています。

 

 関連するレコードへ移動[テーブル:「割り当てられたタスク一覧|タスク」;

 使用するレイアウト:「タスク一覧」(タスク)]

 関連するレコードへ移動[関連レコードのみを表示;テーブル:「イベント」;

 使用するレイアウト:「イベント詳細」(イベント)]

 

Else

#[戻る]ボタンを追加情報でカスタマイズ

 変数を設定[$$GO_BACK_LAYOUT_ADDITIONAL;値:連絡先::連絡先名前]

 関連するレコードへ移動[関連レコードのみを表示;

 テーブル:「割り当てられたタスク一覧|タスク」;

 使用するレイアウト:”タスク詳細|”&$$PLATFORM]

End If

 

スクリプトトリガ

トリガ|最初のウインドウが開いたとき

このスクリプトは「ファイルオプション」の「スクリプトトリガ」で使用されています。(イベント:OnFirstWindowOpen)起動した時に各プラットフォームに合わせたレイアウトに自動的に切り替えています。

f:id:BeansWorks:20190618231734p:plain

f:id:BeansWorks:20190618231721p:plain

『1行目』

#現在実行中のプラットフォームを選択

#0 = 不明

#1 = Mac

#2 = Windows

#3 = iPad

#4 = iPhone

#5 = アンドロイドデバイス

変数を設定[$$PLATFORM;

値:Choose (   Get(デバイス);     ”デス...]

→Get(デバイス)関数で現在実行中のプラットフォームを選択して変数を設定します。

f:id:BeansWorks:20190618231837p:plain

 

『10行目』

#iOSバイスで実行中の場合

If[$$PLATFORM=”タブレット” or $$PLATFORM="電話"]

  メニューバーの表示切り替え[ロック(L):オフ;隠す]

  ツールバーの表示切り替え[ロック(L);隠す]

  ズームの設定[ロック(L):オン;100%]

End If

 

『17行目』

#OS XWindowsまたはデスクトップWebブラウザで実行中の場合

If[$$PLATFORM="デスクトップ/Web"]

  レイアウト切り替え[「イベント」(イベント);」アニメーション:なし]

 

『21行目』

#iPadまたはモバイルWebブラウザで実行中の場合

Else If[$$PLATFORM="タブレット"]

  レイアウト切り替え[「イベント|タブレット」(イベント);」アニメーション:なし]

 

『25行目』

#iPhoneで実行中の場合

Else If[$$PLATFORM="電話"]

レイアウト切り替え[「イベント|電話」(イベント);」アニメーション:なし]

End If

 

『31行目』

#ソリューションにレコードがない場合

If [Get(レコード総数)=0]

  新規レコード/検索条件

End If

 

トリガ|レイアウト入力時[Getスクリプト引数]

f:id:BeansWorks:20190620224148p:plain

『1行目』

変数を設定[$$ACTIVE_BUTTON;値:Get(スクリプト引数)]

f:id:BeansWorks:20190620224209p:plain
→「$$ACTIVE_BUTTON」という名称で変数を指定します。変数はスライド

ナビゲーションの切り替えで使用しています。

 

トリガ|イベント一覧をソート[Getスクリプト引数]

f:id:BeansWorks:20190624235503p:plain

『1行目』

変数を設定[$$PLATFORM;値:Get(スクリプト引数)]

スクリプト引数を変数として取得します。

f:id:BeansWorks:20190624235636p:plain

 

If [$$SCRIPT_TRIGGER="オフ"]

変数を設定[$$SCRIPT_TRIGGER;値:"オン"]

現在のスクリプト終了[テキスト結果: ]

End If

グローバル変数を切り替えとして使用して、スクリプトがトリガされるのを停止します。

f:id:BeansWorks:20190624235522p:plain

 

変数を設定[$$GO_BACK_LAYOUT;値:""]

If [イベント::選択内容のソート="期間"]

 レコードのソート[記憶する;ダイアログあり:オフ]

Else If [イベント::選択内容のソート="イベント"]

 レコードのソート[記憶する;ダイアログあり:オフ]

Else

 レコードのソート[記憶する;ダイアログあり:オフ]

End If

ウインドウのスクロール[Home]

→検索を実行してソートし、ウインドウの一番上にスクロールします。

 

トリガ|リスト内のイベントを作成検索

・イベントリスト表示時に新規作成ボタンを押すとイベント詳細に切り替わり

 検索ボタンを押すとイベント詳細画面で検索可能です

f:id:BeansWorks:20190625000106p:plain

『1行目』

If [Get(レコードのオープン状態)≠1 and Get(...]

  現在のスクリプト終了[テキスト結果: ]

End If 

f:id:BeansWorks:20190625000120p:plain

→Get(レコードのオープン状態)関数が返す値は次のとおりです。

  • 「0」 - 閉じている (確定された) レコードの場合
  • 「1」 - 確定されていない新しいレコードの場合
  • 「2」- 確定されていない変更されたレコードの場合
  • 「3」 - 確定されていない削除されたレコードの場合

 

→Get ( ウインドウモード )関数が返す値は次のとおりです。

  • 「0」 - ブラウズモード
  • 「1」 - 検索モード
  • 「2」 - プレビューモード
  • 「3」 -印刷中の場合
  • 「4」 - (FileMaker Pro Advanced) データビューアから関数を評価していて

    現在のウインドウがレイアウトモードの場合

 

If[$$PLATFORM="デスクトップ/Web"]

 レイアウト切り替え[「イベント詳細」(イベント);

 アニメーション:なし]

Else

 スクリプト実行[指定:一覧から;

 「選択したイベントに移動|モバイル」;引数: 」]

End If

 

モバイル

イベントレポートを送信|モバイル

 

スクリプトトリガ

トリガ|すべてのイベント情報を更新|モバイル

 

印刷

イベントレポートを印刷する

 

イベントリストを印刷する

 

 

*1:スクリプトトリガとはイベントの発生時にスクリプトを実行するように指定することです。例えば、別のフィールド入力された内容を元にデータがフィールドに自動入力されるスクリプトを実行することが可能です。

https://fmhelp.filemaker.com/help/18/fmp/ja/#page/FMP_Help%2Fscript-triggers.html

 

*2:Get (デバイス)

FileMaker 製品を実行しているコンピュータまたはモバイルデバイスのタイプを表す数値を返します。

現在 FileMaker Pro または FileMaker WebDirect を実行しているコンピュータまたはモバイルデバイスの種類、または現在 FileMaker Go を実行している iOSバイスの種類を示す数値を返します。

この関数が返す値は次のとおりです。

https://fmhelp.filemaker.com/help/18/fmp/ja/#page/FMP_Help%2Fget-device.html

*3:Get (ウインドウモード)

この関数が返す値は次のとおりです。

  • 「0」 - ブラウズモード
  • 「1」 - 検索モード
  • 「2」 - プレビューモード
  • 「3」 -印刷中の場合
  • 「4」 - (FileMaker Pro Advanced) データビューアから関数を評価していて現在のウインドウがレイアウトモードの場合

 

テンプレートでFileMakerの便利な機能を学ぼう!

FileMaker ProにはCustomApp開発に参考になる「Starter」と呼ばれるテンプレートやより高度な「Sample App」が多数収録されています。これらは起動時のウインドウから選択してすぐに作成し、使用することができるようになっています。これらの豊富なテンプレートを活用することにより、CustomApp 作成のアイデアを得ることもできます。

実際の動きを見ながら機能を学ぶことはCustomApp開発の近道です。テンプレートは起動画面から誰でも入手できますので、ファイルメーカーの学習にテンプレートを活用することをお勧めします。

 

【参考】FileMaker公式Tutorial


レッスン 1:サンプル App を使ってビジネスを効率的に

  • 請求書: ダッシュボード、グラフ、製品詳細の確認
  • コンテンツ管理: イメージやビデオ、ファイルの表示と保存
  • 資産: iPadiPhone ユーザでも利用できる資産管理
  •  

オブジェクトデータの外部保存

f:id:BeansWorks:20210907091553p:plain

写真等のオブジェクトデータをFileMakerのファイル内ではなく外部フォルダーで保存することができます。

1.[ファイル]-[管理]-[オブジェクト]でオブジェクトの保存場所を指定出来ます。

f:id:BeansWorks:20190516225009p:plain

保存フォルダーの準備

 2.[フィールド]-[オプション]-[データの格納]でオブジェクトデータを外部に保存オプションにチェックをつけます。

     f:id:BeansWorks:20190516225111p:plain

 3.オブジェクトデータの転送メッセージが出たら[転送]ボタンをクリックします。

     f:id:BeansWorks:20190516225150p:plain

4.オブジェクトが指定したフォルダーに転送されます。

     f:id:BeansWorks:20190516225227p:plain