ホーム 記事一覧 ブック DH週間トピックス 検索 このサイトについて
English
researchmapの科研費と業績の紐付けをPlaywrightで自動化した

researchmapの科研費と業績の紐付けをPlaywrightで自動化した

はじめに researchmap は、日本の研究者が業績を管理・公開するためのプラットフォームです。論文や講演などの業績を登録するだけでなく、科研費(共同研究・競争的資金等の研究課題)との紐付けを行うことで、研究課題ごとの成果一覧を集約できます。 この紐付けについて、APIやCSVインポートでの一括設定ができないか調べたところ、調査した限りでは現時点ではWeb UIからの手動操作に限られるようでした。そこで、Playwrightによる自動化を試みました。 紐付けの方法を調べる researchmapでは、業績データの一括登録はJSONLやCSVファイルのインポートで可能です。一方、科研費と業績の紐付けについては、調査した限り、一括インポートでは設定できないようでした。 API設計書での確認 researchmap v2 API設計書を確認すると、以下のフィールドはすべて「更新不可」と記載されています。 research_projects(科研費)側: rm:published_paper_id(紐づいた論文の業績ID)→ 更新不可 rm:presentation_id(紐づいた講演の業績ID)→ 更新不可 rm:work_id(紐づいたWorksの業績ID)→ 更新不可 業績(論文・講演等)側: rm:research_project_id(紐づいた科研費ID)→ 更新不可 実際に検証 念のため、JSOLNインポートで identifiers.research_project_id を指定して検証しました。 {"insert":{"type":"presentations","id":"52101757"},"merge":{"identifiers":{"research_project_id":["51361068"]}}} 結果:インポート自体は「完了」と表示されましたが、紐付けは反映されませんでした。このフィールドは無視されるようです。 Web UIでは可能 一方、researchmapのWeb UI(編集画面)では、業績ごとに「共同研究・競争的資金等の研究課題」のプルダウンから科研費を選択して紐付けることができます。 この操作は1件ずつ手動で行う必要があり、件数が多いと手間がかかります。 Playwrightで自動化する Web UIでの手動操作を、Playwrightを使って自動化するPythonスクリプトを作成しました。 仕組み .env ファイルからresearchmapのログイン情報を読み込み Playwrightでブラウザを起動し、自動ログイン 各業績の編集ページ(/{slug}/{type}/{id}/edit)に移動 selectize.jsで実装されたプルダウンから、対象の科研費を自動選択 「決定」ボタンをクリックして保存 既に紐付け済みの業績は自動スキップ 編集画面のHTML構造 researchmapの編集画面では、科研費のプルダウンはselectize.jsで実装されています。 <select name="data[PublishedPapersIndex][_source][identifiers][research_project_id][]" class="form-control selectized" multiple="multiple" style="display: none;"> <option value="50040755" selected="selected">TEIを中心とした高度な歴史テキスト構築</option> </select> 実際の <select> は非表示で、selectize.jsが生成するカスタムUIで操作します。Playwrightでは以下のようにselectize入力をクリックし、ドロップダウンからオプションを選択します。 # selectize の入力エリアをクリックしてドロップダウンを開く selectize_input = page.locator(f'#{selectize_id}-selectized') await selectize_input.click() # ドロップダウンから該当の科研費を選択 option = page.locator(f'.selectize-dropdown .option[data-value="{project_id}"]') await option.click() # 「決定」ボタンで保存 submit = page.locator('button[name="save"][type="submit"]') await submit.click() 紐付け設定ファイル 紐付け対象はJSONファイルで管理します。 ...

researchmapで論文等にリンクを貼る

researchmapで論文等にリンクを貼る

概要 researchmapで論文等にリンクを貼る方法です。 それぞれのアイテムの編集画面において、「より詳しい情報の入力」リンクをクリックします。 以下のようにURLなどの入力フォームが追加で表示されます。 researchmapの利用にあたり、参考になりましたら幸いです。

CSVファイルを用いたresearchmap業績の新規登録・更新・削除方法

CSVファイルを用いたresearchmap業績の新規登録・更新・削除方法

概要 researchmapの業績について、CSVファイルを用いた新規登録・更新・削除を行いました。本記事では、その方法と使用したデータを共有します。 今回使用したサンプルデータ https://github.com/ldasjp8/researchmap 新規登録 まず「インポート」ボタンをクリックします。 インポートダイアログが表示されるため、新規登録用のcsvファイルを選択して、「整合性チェック」ボタンを押します。 登録するcsvファイルの例を以下に格納しました。「published_papers」へ新規登録を行う例です。 https://github.com/ldasjp8/researchmap/blob/main/create.csv 公式の「CSV項目定義書」やCSVファイルのサンプルは以下で取得できます。 https://researchmap.jp/public/other-document/specification 結果、「処理待ち」のタスクが登録されます。 少し待って「更新」ボタンを押すと、以下のように整合性チェックが終了します。「こちらよりチェック結果を確認」リンクをクリックします。 以下の画面に遷移後、「インポート」ボタンを押します。 再び「処理待ち」のタスクが登録されます。 少し待って「更新」ボタンを押すと、以下のようにインポートが終了します。 「論文」の一覧ページでも、新規に登録されていることを確認できます。 なお、以降の「更新」「削除」においては、登録した業績のIDが必要になります。今回登録した業績のIDは36765885でした。このIDは、登録した個々の業績のURLなどから確認することができます。 また、既に登録済みの業績のIDを一括取得する場合は、「エクスポート」機能などを用います。 更新 新規登録と同様、「インポート」機能を用いて、更新用のCSVファイルを登録します。 更新用のcsvファイルの例を以下に格納しました。 https://github.com/ldasjp8/researchmap/blob/main/update.csv ポイントとして、アクションタイプに「similar_merge」、類似業績マージ優先度に「input_data」、IDに先ほど取得した業績のIDを入力しています。 これらを行いたいことに対して適切に設定しないと、類似業績などによって整合性チェックでエラーが発生する可能性があります。 以下のCSV項目定義書のページが参考になります。 https://researchmap.jp/outline/v2api/v2CSV.pdf#page=7 以下のようにタスクが登録されます。 少し待って「更新」ボタンを押すと、以下のように整合性チェックが終了します。「こちらよりチェック結果を確認」リンクをクリックします。 以下の画面に遷移後、「インポート」ボタンを押します。 少し待って「更新」ボタンを押すと、以下のようにインポートが終了します。 以下のように、先ほど登録した業績の情報が更新されます。 削除 これまでと同様、「インポート」機能を用いて、削除用のCSVファイルを登録します。削除用のcsvファイルの例を以下に格納しました。 https://github.com/ldasjp8/researchmap/blob/main/delete.csv CSVファイルの登録後、少し待って「更新」ボタンを押すと、以下のように整合性チェックが終了します。「こちらよりチェック結果を確認」リンクをクリックします。 以下の画面に遷移後、「インポート」ボタンを押します。 少し待って「更新」ボタンを押すと、以下のようにインポートが終了します。 業績のページにアクセスしてみることで、業績が正しく削除されていることを確認できます。 まとめ researchmapの業績に対する一括登録や更新、削除を行う際の参考になりましたら幸いです。