Clarisと社名が変更になった.

本家 https://www.claris.com/ja/

商品名は「Claris FileMaker」

XMLの取り扱い
FMのデータからファイルを作成
firewall
server

PMIDからメタデータを取得する

PMIDなる数字のフィールドを用意して、その値を元にPUBMEDのメタデータを取得して結果をJsonData[テキスト]フィールドに収めるスクリプト

レコード/検索条件/ページへ移動 [最初の]
Loop
    If [ IsEmpty ( pubmed::PMDI )]
         全スクリプト終了
    End If
    URL から挿入[選択; ダイアログあり:オフ; ターゲット:pubmed::jsonData;
    "https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esummary.fcgi?db=pubmed&retmode=json&id="  & pubmed::PMID]
    # DOSと間違われないようにするためインターバルを設置
    スクリプト一時停止/続行 [間隔(秒): 3]
    レコード/検索条件/ページへ移動 [次の; 最後まできたら終了;オン]
End Loop

これで得られたJsonDataフィールドを使って1stAuthorを得るには、データベースにfirstAuthor[計算]フィールドを作って
その計算式は下記のようにする

JSONGetElement ( jsonData ; "result." & PMID & ".authors[0].name")

またlastAuthorを得るなら、lastAuthor[計算]フィールドを作って、同じくその計算式には

JSONGetElement ( jsonData ; "result." & PMID & ".lastauthor")

とする。

Title      --> JSONGetElement ( jsonData ; "result." & PMID & ".title")
Journal名  --> JSONGetElement ( jsonData ; "result." & PMID & ".source")
Volume     --> JSONGetElement ( jsonData ; "result." & PMID & ".volume")
Issue      --> JSONGetElement ( jsonData ; "result." & PMID & ".issue")
Page       --> JSONGetElement ( jsonData ; "result." & PMID & ".pages")
ELocationID -> JSONGetElement ( jsonData ; "result." & PMID & ".elocationid")

DOIからメタデータを取得する

基本的にPMDIから...と同じ. ただDOIの方は氏名がフルで書かれているみたいで、それを取得してみる
っで作ったスクリプト

レコード/検索条件/ページへ移動 [最初の]
Loop
    If [ IsEmpty (DOI)]
         全スクリプト終了
    End If
 
    If [ DOI_json = "" ]
      URL から挿入[選択; ダイアログあり:オフ; ターゲット:DOI_json; "https://api.crossref.org/works/" & DOI]
      スクリプト一時停止/続行 [間隔(秒): 10]
    End If
 
    変数を設定 [$authorCount; 値: ValueCount(JSONListKeys ( DOI_json ; "message.author" ))]
    変数を設定 [$i; 値: 0]
 
    If [ $authorCount > 0 ]
       Loop
           変数を設定 [$seq; 値: JSONGetElement ( DOI_json ; "message.author[" & $i & "]sequence" )]
           if [ $seq = "first" ]
                変数を設定 [ $given; 値: JSONGetElement ( DOI_json ; "message.author[" & $i & "]given")]
                変数を設定 [ $family; 値: JSONGetElement ( DOI_json ; "message.author[" & $i & "]family")]
                フィールド設定 [ DOI_json_1stAuthor ; $family & " " & $given ]
           End If
 
           変数を設定 [$i; 値: $i + 1 ]
           Exit Loop If [ $i >= $authorCount ]
       End Loop
    End If
 
    レコード/検索条件/ページへ移動 [次の; 最後まできたら終了;オン]
End Loop

DOIのデータから論文誌を抽出するには

Substitute (
   JSONGetElement ( DOI_json ; "message.short-container-title" );
[ "[\"" ; "" ];
[ "\"]" ; "" ]
)

同じくタイトルを抽出するには

Substitute (
JSONGetElement ( doi_jsonData ; "message.title" );
[ "[\"" ; "" ];
[ "\"]" ; "" ] )

とする

外部 SQL データソース(ESS:External SQL Data Source)

オラクル内に作ったAERSの各種データをFMで閲覧できないかと考え、ESSを思いつく。
win7の「ODBCデータソースアドミニストレーター」なるものの「システムDSN」にオラクルさんのInstantClientを
用意したら認識できた。*「ユーザDSN」に置いていると見えなかった。
2013y01m22d_223302404.png

カスタム関数

2018y07m29d_012047052.png
グローバル格納の「str」を作って、複数行で入力可能とします。
その入力値を使って「text」を検索して、ヒットした文字列を赤字/太字にするカスタム関数

Case(
  $$#c = "";
  Let(
    [ $$#c = 1 ;
      $$#res = text  ];
    ColorText( str ; text)
  );
  $$#c > ValueCount( str )  ;
  Let(
    [ $$#c = "";
      #res = $$#res; 
      $$#res = ""  ];
    #res
  );
  $$#c =< ValueCount(word)  ;   /* 「=<」はFileMakerでは表記が異なる */
  Let(
    [ 
      $$#res = Substitute ( $$#res ; GetValue ( str ; $$#c ) ; TextStyleAdd ( TextColor( GetValue ( str ; $$#c ) ; RGB ( 255 ; 0 ; 0 )) ; 太字 ) );
      $$#c = $$#c + 1 ];
    ColorText( word; text)
  )
)

トップ   編集 添付 複製 名前変更     ヘルプ   最終更新のRSS
Last-modified: 2020-11-24 (火) 23:14:48 (3d)