繰り返しx回ごとに特定の操作を実施する
304 views
繰り返しx回ごとの操作が必要になる例
・AUTOROの負荷軽減のため、繰り返しx回ごとにブラウザを開閉する必要がある
・管理上の都合で、ブラウザでのユーザー登録操作を10回実施したら、次の繰り返しでアカウントを変える必要がある
・繰り返しで文章を生成する場合、5行につき1度、広告メッセージを挿入したい
AUTOROの繰り返し処理の中でブラウザ操作をする場合、繰り返しの回数が嵩むとAUTOROのCPUやメモリの負荷が上がってしまい、そのままワークフローが失敗することがあります。
このような負荷を軽減する方法として「繰り返しx回ごとにブラウザを開閉する」というものがあります。
本記事では、上記の負荷軽減を例としたワークフローのサンプルを紹介します。
※この方法は繰り返し7回ごとに何らかの操作をしたい!などのケースで汎用可能です。
以下より「繰り返し3回ごとにブラウザを開き直す」例を紹介します。
繰り返し開閉されるブラウザを格納するための変数を用意します。
- 変数に保存を設定します
- 変数名を以下とします
browser
- 値は空欄のままとします。
※注意
この操作をしない場合、x回ごとに閉じたブラウザを操作することができなくなります。ブラウザのインプットがそのままでは利用できなくなるためです。
参考ページ:スコープ
ここで初めてブラウザを開きます。
3回ごとにブラウザを開くための条件を設定します。これは以下の剰余計算(あまりの計算)で判定できます。
現在の繰り返し回数 % x回ごとのx === 0
この条件式の雛形を使うことで「現在の繰り返し回数を3で割った数の余りが0なら、ブラウザを開く」という表現ができます。実際に設定していきます。
- IF(条件分岐)を設定します
- 以下条件式を入力します
${index % 3 === 0}
- OpenBrowser(ブラウザを開く)をIFの範囲内に設定します
- 以下URLを入力します
https://support.autoro.io/?s=${line}&post_type=docs
- 変数に保存を設定します
- 名前をbrowserにします
- 値をOpenBroserのアウトプットとします
スコープの都合により、2の繰り返しの中ではブラウザ系アクションのインプットを1の変数にする必要があります。
実際に設定してみます。
- GetURL(URLを取得)を3の条件分岐の範囲の下に設定します
- ブラウザのインプットを以下とします
${browser}
# 変数に保存 +store_value_1: action>: StoreValue key: browser value: '' setIfNotDefined: false private: false # 各要素について繰り返す +for_each_1: for_each>: line: ${["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"]} withIndex: index _do: # 真のとき_x回ごとにブラウザを開く +if_1: if>: ${index % 3 === 0} _do: # ブラウザを開く +open_browser_1: action>: OpenBrowser url: 'https://support.autoro.io/?s=${line}&post_type=docs' lang: 'ja-JP' headless: true confirm: true useShadowDomSelector: false private: false # 変数に保存 +store_value_2: action>: StoreValue key: browser value: +open_browser_1 setIfNotDefined: false private: false # URLを取得 +get_u_r_l_1: action>: GetURL browser: ${browser} private: false # 真のとき_x回ごとにブラウザを閉じる +if_2: if>: ${(index + 1) % 3 === 0} _do: # ブラウザを閉じる +close_browser_1: action>: CloseBrowser browser: ${browser} private: false
foreach & 剰余