1 of 12

Power AutomateとOpenBDを使った事務用図書希望フォーム

Code4Lib JAPAN 2022カンファレンス ライトニングトーク

東京大学情報システム部・前田朗

2 of 12

ノーコードに手を出してみる

  • 今年はもうがっつりコードを書いたので
    • 日本語専門用語抽出Node.jsライブラリ termextact-kuromojijs

 → ノーコードでお手軽なツールつくりにチャレンジしました

  • MicrosoftのPower Automateにしてみました
    • 東京大学ではMicrosoft Office365のライセンスがあり仕事で使える
    • 「Power AutomateではじめるノーコードiPaaS開発入門」(ISBN 9784899775232)に、Power AutomateからGoogle Books APIの呼び出しについて書かれていたので、これは使えるかもと

3 of 12

ノーコードで図書館系Web APIを活用

  • プログラムを書かない(ノーコード)で、楽したい
    • 東京大学はMicrosoft Office365のライセンスがあるので、Power AutomateとOffice365のフォームを組み合わせて使ってみる
  • 図書館系で何か活用を考えてみる
    • 今回は、事務用図書希望申請用のフォームを作ってみる
    • 図書の詳細情報入手は、国内の新刊をカバーし価格や内容記述を含むOpenDBのWeb APIにしてみた
  • 実務での使用
    • 試しにチーム内で使用中
    • 引継ぎは考えていない(さした効率化でもないので)

4 of 12

フォーム(Office 365)

  • チームの職員のみに公開
  • 書誌情報はISBNを入れるだけ(OpenBDのデータで詳細情報が補完される)
  • 購入希望理由は自由記述

1.購入希望者の氏名を記載てください

2.購入したい書籍のISBNを入力ください

3.購入したい書籍の希望理由を記載ください

送信

5 of 12

結果(Excelオンラインに出力)

  • Excelオンライン(チーム職員のみアクセス可)に、投稿結果が記録される
  • 記録に失敗した場合は、直に記載
  • フォームを使わず直に記載でもよいことにした

列名

説明

タイトル

OpenDBからISBNをキーにデータを取得

著者

出版社

価格

ノート

ISBN

フォームの入力より

希望日は処理日から自動取得

希望日

希望理由

希望者

購入状況

管理者が発注・受け入れ状況を記載

6 of 12

つくりかた

Power Automateの使い方は、メニューから使いたいアクション(処理)を選択し、パラメータを設定し、順につなげるだけです。

以降の説明は多少「はしょって」います。

7 of 12

フロー(前処理)

新しい応答が送信されるとき

応答の詳細を取得する

現在の時刻

タイムゾーンの変換

変数を初期化する

条件

指定のOfficeフォームで入力があった場合、処理を開始し入力を取得する

処理日を日本時間で取得する

ISBNの先頭が’978’以外の場合に処理を中断する(チーム内利用なのでチェックは緩い)

8 of 12

ISBNチェックで「はい」の場合

URLからのファイルのアップロード

パスによるファイルコンテンツの取得

変数の設定

JSONの解析

Web APIの結果を一時ファイルに保存する(ユーザ数が少ないのでまずバッティングしない)。

その上で変数に取り込む。

( premium版だと直に変数に取り込めるらしい)

OpenDBのJSONを解析する。失敗した場合は処理を終了する

9 of 12

解析結果をExcelオンラインに追記

Apply to each

表に行を追加

タイトル

著者

出版社

価格

ノート

ISBN

希望日

希望理由

希望者

購入状況

  • Apply to eachは繰り返し処理
  • 基本的にJSON解析で自動生成される変数を各フィールドに割り当てるだけ
  • 「価格」と「ノート」だけはJSONパスを直に指定
  • 「購入希望」はここでは指定しない

10 of 12

つくってみて

11 of 12

個人的な感想

  • 事務用図書希望のフォームについて
    • 書籍情報の入力(価格や内容記述を含む)がISBNだけで済むのはちょっと楽
    • 不足はあるがチーム内限定利用であればよいかと
    • 引継ぎはちょっと面倒かも
  • Power Automateについて
    • コードを書かなくてよいのは楽かも
    • といっても一部JSONパスの直指定はしましたが…
    • プログラミング的思考は役に立つ
    • シンクライアント環境でも使えるのはよい
    • 複雑なことをさせるのはきつそう

12 of 12

ご清聴ありがとうございました