スプレッドシートを繰り返しで1行ずつ処理する 入門編
この記事では、スプレッドシート/Excelに存在する情報を、AUTOROの「各要素を繰り返す」アクションで1行ずつ処理をする方法を紹介します。
この方法は、様々なワークフローで汎用的に利用可能です。
※この記事では、シートの情報を1行ずつ処理する場合の入門的な方法を紹介しています。
1行ごとの繰り返し処理結果をシートに記入しながら繰り返す/繰り返しを途中から再開する方法については、こちらの記事をご参照ください。
【できるようになること】
・スプレッドシートの行情報を繰り返しで処理する
・Webページからテーブルデータ(CSV)形式で取得した情報を、その情報を貼り付けるためだけに存在するシートに書き込む
要件の確認
以下のようなワークフローを作成することにより、スプレッドシートを1行ずつ処理する方法を紹介します。
情報取得前
情報取得後
- URLが記入されているスプレッドシートを準備する
- ワークフローを作成する
アクセスしたURLから情報を取得し、スプレッドシートに転記する
今回は、このシートを使用します。
https://docs.google.com/spreadsheets/d/1YpWJY5_2uskik4iw9AY2Dudsy_cRFSCdQDYi51ibb8U/
このシートは、こちらからコピーしてご使用いただくことが可能です。
ワークフロー設定例
下記手順にてワークフローを設定します。
上述のサンプルシートをコピーしたシートを取得します。
スプレッドシートのコネクションが存在しない場合は、こちらの記事を参考にコネクションを作成してください。
- GetSpreadsheet(既存のスプレッドシート を取得)アクションを設置します。
- 「プロバイダID」パラメータに自身のプロバイダIDを指定します。
- 「スプレッドシートID」パラメータに、コピーしたスプレッドシートを指定します。

次に、繰り返す情報を取得します。
- GetCells(セルの値を取得)アクションを設置します。
- 「範囲」パラメータに以下を入力します。
シート1!A2:B

取得した値を、1行ずつ繰り返すための処理を設定します。
- ForEach(各要素を繰り返す)を設置します。
- 「繰り返すリスト」パラメータにGetCellsのアウトプットを指定します。
- 「要素を格納する変数名」パラメータに、
rowと入力します。

ブラウザを開き、シートのURLにアクセスします。
- OpenBrowser(ブラウザを開く)を設置します。
- URLに、${row[1]}と入力します。
※処理中の1行である変数rowは、配列となっています。今回はA列から情報を取得しており、かつB列にURLが記載されているため、変数rowの2列目を意味する${row[1]}を指定します。(1番目は0、2番目は1と続いていきます)

アクセスしたページから、CSV(ヘッダーなし)形式で情報を取得します。
取得した情報にヘッダーが存在すると、貼り付け専用シートに繰り返した回数分だけのヘッダーが貼り付けられてしまうため、ヘッダーをなしにする必要があります。
- ExtractData(ページからデータを抽出)を設置します。
- 「抽出対象」パラメータに、以下を入力します。
[{"name":"タイトル","selectors":[":nth-child(1) > .col-md-7 > .post-wrapper > .post-header > .post-title > a",":nth-child(2) > .col-md-7 > .post-wrapper > .post-header > .post-title > a"]},{"name":"作成日時","selectors":[":nth-child(1) > .col-md-7 > .post-wrapper > .post-header > .post-meta > :nth-child(1)"]},{"name":"カテゴリ","selectors":[":nth-child(1) > .col-md-7 > .post-wrapper > .post-header > .post-meta > :nth-child(2) > a"]}] - 「出力フォーマット」パラメータに、以下を入力します。
csvWithoutHeader

取得した情報は、貼り付け専用のシートの最後の行+1行目の位置から順に貼り付けていきます。
- AppendValues(末尾に値を追加)を設置します。
- 「Spreadsheet」パラメータに、1.のGetSpreadsheetのアウトプットを指定します。
- 「範囲」パラメータに以下を入力します(行番号は指定不要です)
貼り付け専用!A:A - 「値」パラメータに、ExtractDataのアウトプットを指定します。

繰り返し1回につき、ブラウザを閉じるよう設定します。
これにより、ロボットのCPU/メモリ負荷が大幅に軽減されます。
(ブラウザを開きすぎるとエラーや処理時間増加につながるのでご注意ください)
- CloseBrowser(ブラウザを閉じる)を設置します。
- 「ブラウザ」パラメータに、OpenBrowserのアウトプットを指定します。


# 既存のスプレッドシートを取得
+get_spreadsheet_1:
action>: GetSpreadsheet
provider: ''
spreadsheet_id: ''
meta:
display:
# セルの値を取得
+get_cells_1:
action>: GetCells
spreadsheet: +get_spreadsheet_1
range: 'シート1!A2:B'
# 各要素について繰り返す
+for_each_1:
for_each>:
row: +get_cells_1
_do:
# ブラウザを開く
+open_browser_1:
action>: OpenBrowser
url: ${row[1]}
lang: 'ja-JP'
headless: true
# ページからデータを抽出
+extract_data_1:
action>: ExtractData
browser: +open_browser_1
extractor: [{"name":"タイトル","selectors":[":nth-child(1) > .col-md-7 > .post-wrapper > .post-header > .post-title > a",":nth-child(2) > .col-md-7 > .post-wrapper > .post-header > .post-title > a"]},{"name":"作成日時","selectors":[":nth-child(1) > .col-md-7 > .post-wrapper > .post-header > .post-meta > :nth-child(1)"]},{"name":"カテゴリ","selectors":[":nth-child(1) > .col-md-7 > .post-wrapper > .post-header > .post-meta > :nth-child(2) > a"]}]
format: csvWithoutHeader
multiple: true
# 末尾に値を追加
+append_values_1:
action>: AppendValues
spreadsheet: +get_spreadsheet_1
range: '貼り付け専用!A:A'
values: +extract_data_1
# ブラウザを閉じる
+close_browser_1:
action>: CloseBrowser
browser: +open_browser_1