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")
pubdate(出版日)      -> JSONGetElement ( jsonData ; "result." & PMID & ".pubdate")
epubdate(電子出版日) -> JSONGetElement ( jsonData ; "result." & PMID & ".epubdate")

著者一覧

Replace (
while (
  [ 
      count =  0 ;
      authors = ""
  ] ;
  count < ValueCount ( JSONListKeys  ( PMID_jsonData; "result." & PMID & ".authors")  ) ;
  [
      authors =  authors   & ","  & JSONGetElement ( PMID_jsonData ; "result." & PMID & ".authors[" & count & "].name");
      count = count + 1 
  ];
  authors
) ;
1;1;"")

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" );
[ "[\"" ; "" ];
[ "\"]" ; "" ] )

とする

JSONGetElement ( doi_jsonData ; "message.volume" )
 
 
JSONGetElement ( doi_jsonData ; "message.page" )
 
JSONGetElement ( doi_jsonData ; "message.issue" )
 
Substitute (
JSONGetElement ( doi_jsonData ; "message.created.date-parts" );
[ "[\"" ; "" ];
[ "\"]" ; "" ];
[ "[" ; "" ];
[ "]" ; "" ] )

著者一覧

Replace (
while (
  [ 
      count =  0 ;
      authors = ""
  ] ;
  count < ValueCount ( JSONListKeys ( DOI_jsonData ; "message.author" )  ) ;
  [
      authors =  authors   & ","  & 
                  JSONGetElement ( DOI_jsonData ; "message.author[" & count & "].given") & " " & 
                  JSONGetElement ( DOI_jsonData ; "message.author[" & count & "].family")  ;
      count = count + 1 
  ];
  authors
)
;
1;1;"")

外部 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)
  )
)
最新の60件
2024-10-11 2024-10-10 2024-10-09 2024-10-08 2024-10-06 2024-10-05 2024-10-04 2024-10-03 2024-10-02 2024-10-01 2024-09-30 2024-09-29 2024-09-28 2024-09-27 2024-09-22 2024-09-20 2024-09-17 2024-09-12 2024-09-09 2024-09-08 2024-09-06 2024-09-05 2024-09-04 2024-09-02 2024-09-01 2024-08-31 2024-08-28 2024-08-18 2024-08-17 2024-08-16 2024-08-15 2024-08-14 2024-08-11

edit


トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2021-05-08 (土) 11:50:51