初心者のFileMaker pro Q&A (旧掲示板)

みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。

1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)

You are not logged in.

Announcement

新しい掲示板は、こちら:https://fm-aid.com/forum/t/filemaker


#1 2015-05-29 17:56:58

まさたか
Member

applescriptでポータル表示されている2行目以降のデータ取得方法

使用環境はmac os10.6、filemaker12 advanceです

ポータルにリレーションによるデータが、「フィールドA」「フィールドB」「フィールドC」と表示される状態で、複数行(リレーションで該当する複数データ)あります。
filemakerのポータルで表示されているデータを、applescriptを使用してInDesignのドキュメントに流し込む作業をしたいのですが、ポータル1行目にあるデータは、applescriptで「cell "リレーション先のテーブル::フィールドA"」「cell "リレーション先のテーブル::フィールドB"」「cell "リレーション先のテーブル::フィールドC"」と言った設定で、filemaker上のデータは取得できます。
しかし、ポータルで表示されている2行目、3行目にある「フィールドA」「フィールドB」「フィールドC」のデータは、2行目以降は1行目のようではデータは取得できません。どのようにすれば取得できるのでしょうか?
よろしくお願いします。

Offline

#2 2015-05-29 19:34:57

旅人
Member

Re: applescriptでポータル表示されている2行目以降のデータ取得方法

AS、全然知りませんが
関連フィールドに改行が無ければ、それを計算フィールドでListしたら
2行目は
set x to cell "リスト" of current record
set y to paragraph 2 of x
なら簡単?
計算フィールドが関連フィールドの数だけ要るけど・・・

Offline

#3 2015-06-01 23:08:47

まさたか
Member

Re: applescriptでポータル表示されている2行目以降のデータ取得方法

旅人さま、お答えありがとうございます。なるほど、「改行なし」であればそう言う方法もあったのですね。
「改行あり」なら方法はないのでしょうか?
たとえばポータルに表示されてる各レコード、元テーブルのレコードに移動して一旦移動して取得することはできるのだろうか?

Offline

#4 2015-06-02 12:21:36

旅人
Member

Re: applescriptでポータル表示されている2行目以降のデータ取得方法

Listする前に改行を特殊な文字にSubstituteしておいて
あとでASで改行に戻す。とか

Offline

#5 2015-06-02 12:24:51

yaya
Member

Re: applescriptでポータル表示されている2行目以降のデータ取得方法

recordで取ればポータルフィールドは配列で返ります。

set rec to current record
set portal_field to item 1 of rec
repeat with x in portal_field
-- 何かする
end repeat

Offline

#6 2015-06-02 12:52:38

旅人
Member

Re: applescriptでポータル表示されている2行目以降のデータ取得方法

yayaさんにお任せ・・・m(_ _)m

Offline

#7 2015-06-02 13:01:28

まさたか
Member

Re: applescriptでポータル表示されている2行目以降のデータ取得方法

旅人さま、「改行」を一旦別に変換しておいてと言う手ありましたね。

Offline

#8 2015-06-02 13:04:29

まさたか
Member

Re: applescriptでポータル表示されている2行目以降のデータ取得方法

yayaさま、なかなかいい感じかもしれませんね。
ひとつ疑問ですがcurrent recordとすると全てを拾っちゃうのでは?
ポータル部分だけのレコードだけ拾うには「current recordのポータル部分」って感じで指定できるのでしょうか

Offline

#9 2015-06-02 13:37:41

yaya
Member

Re: applescriptでポータル表示されている2行目以降のデータ取得方法

current recordで全部拾っておいて、2行目で任意のフィールドに絞っています。
どうしても1行にするなら
set portal_field to item 1 of current record
だけど、必要なフィールドが何番目にあるか確かめないといけないので無理に1行にすることはないですね。

用語説明を見てもポータルに関するものは無いので、こうするしかないと思います。

Offline

#10 2015-06-02 13:54:31

まさたか
Member

Re: applescriptでポータル表示されている2行目以降のデータ取得方法

yayaさま、用語説明を見てもポータルに関するものないですよね。それでここでお知恵をお借りしたいと思った次第です。

やや私の説明不足だったのかもしれません。

current recordで全部拾っておいて、2行目で任意のフィールドに絞っています。
どうしても1行にするなら
set portal_field to item 1 of current record

と言うことはレコード上の全てのデータを拾ってる訳ですよね?

Offline

#11 2015-06-02 15:15:49

yaya
Member

Re: applescriptでポータル表示されている2行目以降のデータ取得方法

>用語説明を見てもポータルに関するものないですよね。それでここでお知恵をお借りしたいと思った次第です。

用語説明にないことはよっぽどトリッキーな方法(画面の座標を使ったり、マウスの軌跡を追ったり)を取らない限りできないです。

>と言うことはレコード上の全てのデータを拾ってる訳ですよね?

ですが、問題ありますか?
どうしても余分なフィールドのデータを拾いたくないなら、AppleScript用のレイアウトで行うとか、方法はあると思います。

Offline

#12 2015-06-02 16:08:08

scripter
Guest

Re: applescriptでポータル表示されている2行目以降のデータ取得方法

関連レコードに移動してからやったらどうかな。

#13 2015-06-02 16:09:32

まさたか
Member

Re: applescriptでポータル表示されている2行目以降のデータ取得方法

yayaさま、いろいろとありがとうございます。
なんとかポータル部分だけのレコードだけを直接取り出したかったのですが、
現在のレコード上のデータ(ポータル以外部分とポータル部分)をひらって、
そこからAppleScriptでポータル部分のフィールドを取得することになる訳ですね

Offline

#14 2015-06-03 09:14:56

旅人
Member

Re: applescriptでポータル表示されている2行目以降のデータ取得方法

scripterさんの、関連レコード移動後なら基本的なASでできそうですよね。

Offline

#15 2015-06-03 09:29:38

scripter
Guest

Re: applescriptでポータル表示されている2行目以降のデータ取得方法

set rec to current record
が、ポータル含めた全データをどっかにコピーしてるのかどうか疑問だったのでちょっと調べたけど、用語辞書では名詞としか書いてないしわかりませんでした。
普通は参照だからレコードIDが保存されるだけのような気がしたんですが。

#16 2015-06-03 10:08:35

まさたか
Member

Re: applescriptでポータル表示されている2行目以降のデータ取得方法

旅人さま、scripterさま、ありがとうございます。
「set rec to current record」は「ポータル含めた全データ」ですね。
関連レコード移動後というのはそれなりにイメージは出来てるのですが・・・
現在のレコードからポータル内の関連レコード移動し、ポータル内に表示されていたレコード件数分だけのデータをAppleScriptで取得と言う感じになるのですかね?

Offline

#17 2015-06-03 11:48:13

チポ
Member

Re: applescriptでポータル表示されている2行目以降のデータ取得方法

取り込みたいポータルのフィールド値を、
一時保管するフィールドに移して、
そのフィールドからASで取り込むのはどうでしょう。

ポータル行を指定して、一時保管に値を移すのは
FMのスクリプトでできますよね。

Offline

#18 2015-06-03 14:47:30

まさたか
Member

Re: applescriptでポータル表示されている2行目以降のデータ取得方法

チポさま、ありがとうございます。
なるほど!と言いたいのですが、ポータル行を指定して一時保管に値を移すという作業がどのようにすれば?と言う感じでいまいち理解できてなくて・・・

Offline

#19 2015-06-03 15:08:01

チポ
Member

Re: applescriptでポータル表示されている2行目以降のデータ取得方法

ポータルの表示がリレーションのソート順になっていることが条件です

スクリプトで
フィールド設定 [ 一時保管 ; GetNthRecord (ポータルテーブル::フィールドA ; N ) ]
これで、
ポータルのN行目のフィールドAの値が一時保管に入ります。

Nを変数にして、Loopで変化させれば次々と値を入れ替えられますね。

Offline

#20 2015-06-03 15:28:23

まさたか
Member

Re: applescriptでポータル表示されている2行目以降のデータ取得方法

チポさま、わかりやすく教えていただきありがとうございます。
この方法でいくとポータルのフィールド数だけ一時保管するフィールドを用意すればいいわけですね。

Offline

#21 2015-06-03 15:38:19

チポ
Member

Re: applescriptでポータル表示されている2行目以降のデータ取得方法

そうでもいいでしょうし、
一つにして、
順にポータルのフィールドの値を入れ替えて、ASで変数に入力してゆく
でもいいのでは。

Offline

#22 2015-06-03 16:10:10

まさたか
Member

Re: applescriptでポータル表示されている2行目以降のデータ取得方法

チポさま、ありがとうございます。
順にポータルのフィールドの値を入れ替えるということは、GetNthRecordでフィールド部分を変数にして入れると言うことですね

Offline

#23 2015-06-03 17:27:26

チポ
Member

Re: applescriptでポータル表示されている2行目以降のデータ取得方法

GetNthRecordでフィールド部分を変数にして入れる

これはポータル行の移動です。

一つのポータル行の中野フィールドに移動は、
全て並べないとダメでしょう。

一時保管をフィールド数分作った方が簡単かな。

Offline

#24 2015-06-03 18:21:01

yaya
Member

Re: applescriptでポータル表示されている2行目以降のデータ取得方法

どうしてフィールドをFileMakerで絞らなければならないのかが全然分かりません。
目的はInDesignに入力することなんだから、私だったらもっと大雑把に

tell application "FileMaker Pro"
  tell layout "TEST"
    set recs to every record   -- 検索されたレコードの値が全部入る
  end tell
end tell

tell application "InDesign"
  activate
  repeat with aRec in recs  -- レコードごとに繰り返し
    set x to item 1 of aRec -- 通常のフィールド
    set y to item 2 of aRec -- 同じく
    set array to item 3 of aRec -- ポータル内のフィールドを変数に
    repeat with v in array  -- ポータルの値ごとに繰り返し
      -- x, y, vを使ってなんかする
    end repeat
  end repeat
end tell

てな感じで、InDesignで何かする時に値を取り出すような作りにしますけどね。
これなら、使いたいフィールドが変わってもFileMakerの部分は何もしなくていい。
純粋にAppleScriptの処理だけ考えればいいですから。

これをFileMakerのスクリプトでループを回して、その度にAppleScriptを起動して変数を溜めていくなんてやろうとしたら、面倒だと思いますよ。

Offline

#25 2015-06-04 17:02:20

まさたか
Member

Re: applescriptでポータル表示されている2行目以降のデータ取得方法

yayaさま、ありがとうございます。
なるほど!おっしゃる通りかもしれません。FileMakerで少しでも楽に取得したいと言う考えが先行していたみたいです。
教えていただいた方法で、試してみます。まだまだ知識が少ないので、またいろいろご質問させていただくかと思いますがよろしくお願いしますね

Offline

Registered users online in this topic: 0, guests: 1
[Bot] ClaudeBot

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.013 seconds, 9 queries executed - Memory usage: 570.83 KiB (Peak: 591.37 KiB) ]