スプレッドシートを繰り返しで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