Automaによる自動化 - CSVを使った大量データ登録

※この記事は自分が所属する組織で書いた以下の記事のコピーです。投稿した記事は個人の著作物として自ブログにコピーして良いルールとしています。

元記事: https://tech-blog.mitsucari.com/entry/2025/12/10/121816


こんにちは、ミツカリCTOの塚本こと、つかびー(@tsukaby0) です。

みなさんはWebページを操作していて、こんなことを思ったことはありませんか?

「繰り返しが面倒だ。大量のデータを登録するのが大変だ。」

Webに限りませんが、こう言う問題は一般的によくあるため、これを解決する技術・領域としてRPA(Robotic Process Automation)というものがあります。

今回はそのRPAツールであるAutomaを使って、大量の操作を自動化するテクニックを共有したいと思います。

Automaとは

AutomaはChromeの拡張です。

OSSでもあります。

また、会社でもあり、以下が公式サイトです。

TIKFLOW PTE. LTD. というシンガポールの会社が運営しているようです。ブラウザ版でなくPC版もあるようですが、そちらは使っていないので分かりません。有料プランもあるようですね。

なぜこういう情報を調べるのかというと、Chrome拡張は当初は問題なかったが後で権利の売却等を経てマルウェア化するケースが多発しているためです。そのため基本的には信用できる大手企業の拡張だけ利用し、個人が出しているような拡張は利用しない方が安全です。今回のケースは何とも言えないためリスクが高い方だと思います。利用する場合は要求権限が大きい場合は控える、利用後にアンインストールするなど注意をしておいた方が良さそうです。

この問題について気になる方は以下のような記事をご覧下さい。基本的に拡張のインストールには慎重になりましょう。

Automaをインストールする

AutomaのChrome extensionはブラウザの操作を自動化するものです。ITエンジニアとしては「それって別にPlaywright(あるいは類似製品)でもいいのでは」と思いますし私もこの点は検討しました。

Playwrightでもできますし、場合によってはそちらの方が自由度が高くて早く作れる気はします。しかし、非エンジニアが実行したり保守することを検討するとベストではないかもしれません。AutomaはGUIでワークフローを作成でき、またワークフローをエクスポートできるので非エンジニアのことも考慮すると良い選択肢と言えそうです。

インストールは拡張のサイトから入れるだけです。

Automaを実行してみる

Chrome拡張の選択部分からAutomaを選択し事前に用意されているサンプルを実行してみます。

自動でタブが開いて”Automa Extension”で検索されました。

AutomaでCSVを使った大量データ登録を実施する

ここからが本題です。意外と苦労したので、その知見が誰かの為になれば嬉しいです。

今回は自分でGoogle formを用意してそこにCSVデータを使って複数回登録処理するような自動化を例にしてみます。

事前準備

ワークフローを作る前に事前にGoogle formとCSVファイルを作成しておきます。

Google formは適当に 名前 年齢 好きな食べ物 の短文形式の3質問だけにしておきます。

CSVファイルは以下のような内容とします。

name,age,favorite_food
鈴木,20,寿司
佐藤,30,いちご

※最後に空行が入らないようにしてください。余計な(空)データが読み込まれてしまいます。

ワークフローの作成時にCSVを読み込む処理を追加しますが、それは追加の権限が必要です。詳細はこちらのヘルプに書いてあります。

Automa Chrome拡張の設定から ファイルの URL へのアクセスを許可する をONにします。これは冒頭の通り強い権限を与えることになるため、相応のリスクがあります。しかし、ブラウザ拡張がCSVを読み込むためにはこうするしかありません。

ONにした後で設定を反映したり拡張を再起動するためにブラウザを再起動した方が良さそうです。

ワークフローの作成

まずAutomaのDashboardを開いて New workflow を押します。 (Record workflow を使う手もあります。この場合、自分のブラウザ操作をワークフロー化してくれるので、こちらもうまく組み合わせたりして作っていくと良いです。)

Triggerの後に色々な操作を繋げていくわけですが、完成形としては以下のようになります。

これについて1つずつ解説します。基本的にそれぞれの要素はダブルクリックするか設定ボタンを押すと詳細な設定ができるので、1つずつ設定していきます。

  1. Trigger: ここから始まる、というだけです。
  2. Insert data: Insertという名称で混乱しましたが、これはデータのロードだと思ってください。ここの解釈にかなり時間を要しました。ヘルプはこちらです。設定画面でファイルのImportボタンを押してから絶対パスを与えます。プレビューボタンでデータ読み込みの確認ができます。確認ができたらOKです。
    1. この辺りはまだよくわかっていないのですが、Tableとして読み込むよりはVariableとして読み込んだ方が良いです。その場合、適当な名称をつけます。今回の場合は answer_data としました。この変数名は後で使います。
  3. New Tab: 指定のURLの新しいタブを開くものです。ダブルクリックしてURLを設定しておきます。今回の場合は自分で事前に用意したGoogle formの回答URLを入れます。
  4. Delay: 指定した時間だけワークフローを止めます。これはページロードなど色々な問題を回避するために使います。また、適度に設定しておくことで対象のサーバーに負荷をかけずに済みますし、どこまで入力ができたかなどを目視で確認できるので適宜入れると良いです。
  5. Loop data: 事前に読み込んでおいたデータに従ってループします。そのループの開始地点です。設定画面を開くとループIDが発行されます。これは後で使うので頭の片隅に置いておきます(コピーしておきます)。また、 Loop through の設定で Variable を選択し、 Variable name には先ほどの answer_data を入れます。
  6. Forms: 画面上の特定の入力項目に入力を行います。
    1. 設定を開くとCSS Selector(またはXPath)を指定するように求められるので、対象の画面内のinput要素などのCSS Selectorを指定します。おそらく非エンジニアにとってはここが一番難しい部分だと思うので、適宜生成AIに解説してもらったり、対象のサイトのHTMLを生成AIに与えてCSS Selectorを作ってもらうと良いです。また、AutomaにはGUIでCSS Selectorを算出する機能があるのでそれを使うのも良いでしょう。
    2. 入力値はCSVの値を使いたいです。その場合、 {{loopData.qwLYrY.name}} というように設定します。 qwLYrY はループIDなので、自分のワークフローのLoop dataに対応した適切な値を設定します。 name の部分はCSVの列名です。
    3. 他2つのFormsも同じように設定します。CSS Selectorの値と入力値の列名の部分(name, age, favorite_food)を適切に変更します。
  7. Click element: 特定のCSSセレクタの要素をクリックします。今回の場合、Google formの送信ボタンを対象とします。
  8. Loop break: ループの終了(次の反復に移る)です。

実行

完成したら保存ボタンを押してから再生ボタンを押します。

うまくデータの投入ができました。

これで大量の操作やデータ登録があっても楽できますね。

Automaのその他Tips

最後に実際にワークフローを組む中でハマった点やコツなどを簡単に列挙していきます。

  • ワークフローがうまく動かない場合はLog機能を使いましょう。どのステップで止まったか、その原因は何かなどが分かります。
  • Formsなどに設定できるWait for selectorは基本的にONにしましょう。まだ画面のロードが完了できていない場合は大抵はHTMLの要素は出現していないので、当然Selectorで選択できません。見つからないというエラーになってしまうことをこれで回避しましょう。
  • input要素と見せかけて実はそうでないケースがあるので、Formsなどの入力が上手くいかない場合はHTMLを良くみましょう。例えばTiptap Editorなどのリッチなエディタはinput要素を使っていません。入力イベントをJavaScriptで拾っており、divやpタグで入力を表現しています。リッチエディタに対して入力自動化を行いたい場合は一工夫必要です。具体的にはJavaScript Code要素を使います。これを使ってdivやpを自分で組み立てて当該箇所にInsertすることで入力を自動化できます。これはもはやITエンジニアでないと作成、保守できないと思うので、これが問題になってくる場合はブラウザではなくPC操作自体を自動化するRPAツールを検討した方が良いかもしれません。
  • 今回は解説しませんでしたが条件に応じて実行する処理を変えたい場合(分岐したい場合)は、Conditionsを使いましょう。
  • 今回はCSVデータをもとにしましたが、画面上のリストの要素が全て消えるまで削除を繰り返したい、というような場合はLoop Elementを使いましょう。

やってみた感想としてはプログラマでも一部苦労しました。やりたい処理次第ですが2,3時間は構築にかかるかもしれません。ただ、一度覚えてしまうと次からは簡単だと思います。ループ処理などが若干面倒だったりするので、Playwright等のコードベースで作る方が早いとは思います。

現在、ミツカリではITエンジニアを募集しています。興味のある方はぜひお気軽にご連絡ください!