0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Workato:EDINETコードリストをWorkatoで活用する(Workatoの様々な機能を活用しながら)

Last updated at Posted at 2024-04-30

はじめに

EDINET(Electronic Disclosure for Investors' NETwork)は、金融庁が運営する「金融商品取引法に基づく有価証券報告書等の開示書類に関する電子開示システム」です。EDINETを利用すると、有価証券報告書のダウンロード(閲覧)を行うことが出来ます(APIも提供されていますが、ここでは触れません)。

また、EDINETでは上場企業や一部非上場企業の会社情報を「EDINETコードリスト」として提供しています。EDINETコードリストでは、企業の名称や所在地だけでなく、上場・非上場、資本金、決算日、業種、法人番号など、営業上非常に有益な情報を取得することができます。

Workatoを利用すると、非常に簡単かつ迅速に「EDINETコードリスト」と自社システムの連携を実現することができます。例えば、自社の顧客データベース(CRM等)を組み合わせることで、顧客データベースの価値をより高めていただけます。

今回は、サンプルレシピをもとにWorkatoを利用してEDINETコードリストを取得する手順を説明します。

また、このページでは

  • 「HTTP」コネクタによるファイルダウンロード
  • 「File tools by Workato」コネクタによるZIPファイルの展開(解凍)
  • 関数(formula)による文字コード変換とCSV加工(不要なヘッダ行の除外)
  • 「SQL Collection by Workato」による一時テーブルの作成とSQL実行による効率的なデータ処理
  • Whileループによる効率的なループ処理

にも触れていますので、これらの機能や手順に関心のある方も是非参考としていただければ幸いです。

手順

1. EDINETコードリストのCSVダウンロード先URLの確認

EDINETコードリストのCSVダウンロード先URLは、以下のPDFより確認することが出来ます。
静的なURLが提供されていますので、そちらのURLを利用することで簡単にダウンロードして利用することが可能です。(P21に記載されています)

EDINETコードリストのCSVダウンロード方法については、Google等で検索すると、RPAやブラウザオートメーション(SeleniumやPuppeteerなど)を利用してダウンロードする方法を多く見かけますが、RPAやブラウザオートメーションによるダウンロードは不要です。

なお、EDINETで公開されている情報は、利用規約に沿った利用であれば、商用・非商用いずれも自由に利用可能とされています。

2. レシピ作成

EDINETコードリストの内容をWorkatoのLookup Tablesへセットする(実行ごとにLookup TablesはTruncateして初期化する)レシピを作成してみました。作成したレシピの内容は、次の通りとなります。

結果セット先のLookup tablesは予め用意されていることを前提とします。

image.png

Step 1:スケジュール実行

「Scheduler by Workato」コネクタを追加します。

image.png

毎週日曜日 0:00(日本時刻)に実行する場合は、次のような設定になります。

予期しない時刻に実行されないよう、Timezoneを Asia/Tokyo に設定することを強く推奨します。

image.png

Step 2:ファイルダウンロード

「HTTP」コネクタを追加します。

image.png

「Send request」を選択します。

image.png

以下の項目を設定します。(それ以外はデフォルトのままとします)

  • Request name:任意の名称
  • Request
    • Method:GET
    • Request URL:EDINETコードリスト(CSVファイル)のURL
  • Response
    • Response content type:Binary

image.png

Step 3:ZIPファイルを展開(解凍)

「File tools by Workato」コネクタを追加します。

image.png

「Uncompress a file」を選択します。

image.png

以下の項目を設定します。(それ以外はデフォルトのままとします)

  • Compression format:Zip
  • File contents:Step2の <Body>

image.png

Step 4:CSVファイルの整形(不要行の削除)

「Variables by Workato」コネクタを追加します。

image.png

「Create variable」を選択します。

image.png

「csv」というString型のフィールドを追加します。

image.png

Variables に以下の値をセットします。
<File Contents> には、Step3の File contents をセットします。

<File Contents>.as_string('cp932').split("\n").drop(1).drop(2).join("\n").strip

image.png

Step 5:CSVを一時DBにセット

「SQL Collection by Workato」コネクタを追加します。

image.png

「Create list from CSV file」を選択します。

image.png

以下の項目を設定します。(それ以外はデフォルトのままとします)

  • CSV source:Step 4の <CSV>
  • List name:edinet ※ここでセットした値はSQL実行時のテーブル名となります
  • File encoded type:UTF-8
  • Column names:以下のフィールドを追加(全てString型、この順番でセット)
    • edinet_code →EDINETコード
    • filer_type →提出者種別
    • listed_unlisted →上場区分
    • consolidation_basis →連結の有無
    • capital_stock →資本金
    • fiscal_year_end →決算日
    • name →提出者名
    • name_en →提出者名(英字)
    • name_kana →提出者名(ヨミ)
    • location →所在地
    • industry →提出者業種
    • security_code →証券コード
    • corporate_number →提出者法人番号
  • Ignore CSV header row:false
  • Column delimiter:comma

image.png

Step 6:変数を初期化、初期値セット

「Variables by Workato」コネクタを追加します。

image.png

「Create variable」を選択します。

image.png

以下のフィールドを追加します。(全てinteger型)

  • page_current
  • page_total
  • offset

image.png

Variables に以下の値をセットします。

  • page_current: 0
  • page_total: formulaモードに切り替え、 (<Row count> / 10000).ceilをセット ※<Row count>はStep 5より選択

image.png

Step 7,8:Lookup TablesのTruncate

「Lookup tables by Workato」コネクタを追加します。

image.png

「Truncate table」を選択します。

image.png

Truncateするテーブルを選択します。

image.png

Step 9:Whileループを追加

Workatoでは、2024年2月にWhileループに対応しました。これまではForEachループのみの対応でしたが、Whileループの対応により、特定の条件に応じてループを抜けるという処理が実装できるようになりました。

WorkatoのBatchで処理可能なレコード数は最大10,000件です。しかし、EDINETコードリストは10,000件を超えるCSVファイルであるため、そのままLookup tablesへ追加しようとするとエラーになります。よって、1回の追加処理が最大10,000件となるように、CSVのレコードを分割で取得しながらLookup tablesにその結果を追加していく必要があります。

全ての件数の処理が完了するまでループさせたい場合は、最近追加されたWhileループを活用すると、簡単かつ効率的なループ処理を実装することができます。

「+」アイコンをクリックし、「Repeat while」をクリックします。

名称未設定.gif

Step 10:SQL実行

「SQL Collection by Workato」コネクタを追加します。

image.png

「Query lists」を選択します。

image.png

以下の項目を設定します。(それ以外はデフォルトのままとします)

  • SQL query: select * from edinet limit 10000 offset <offset><offset>は、Step 6より選択します
  • Output list schema:Step 5のColumn namesと同じ設定を行います

image.png

Step 11:変数の更新

「Variables by Workato」コネクタを追加します。

image.png

「Update variables」を選択します。

image.png

Variable nameをクリックし、「page_current」と「offset」を選択します。

image.png

「page_current」と「offset」をformulaモードに切り替え、次の通り設定します。

image.png

  • page_current: <page_current> + 1 ※page_currentはStep 6より選択
  • offset: <offset> + 10000 ※offsetはStep 6より選択

Step 12, 13:Lookup tablesへの追加

「Lookup tables by Workato」コネクタを追加します。

image.png

「Add entries」を選択します。

image.png

「Entries source type」へ、Step 10の「Rows」をセットします。

「Entry fields」へ、Step 10の各項目より対応するものをセットします。

image.png

Step 14:Whileループの条件設定

次の通り設定します。

  • Data field: <page_current> ※Step 6の「page_current」
  • page_total: <page_total> ※Step 6の「page_total」

image.png

実行結果の例

このレシピを実行すると、Lookup tablesに次のような形で結果がセットされます。

image.png

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?