Docly Child

繰り返しx回ごとに特定の操作を実施する

120 views
繰り返しx回ごとの操作が必要になる例

・AUTOROの負荷軽減のため、繰り返しx回ごとにブラウザを開閉する必要がある
・管理上の都合で、ブラウザでのユーザー登録操作を10回実施したら、次の繰り返しでアカウントを変える必要がある
・繰り返しで文章を生成する場合、5行につき1度、広告メッセージを挿入したい

 繰り返しx回ごとの操作

AUTOROの繰り返し処理の中でブラウザ操作をする場合、繰り返しの回数が嵩むとAUTOROのCPUやメモリの負荷が上がってしまい、そのままワークフローが失敗することがあります。

このような負荷を軽減する方法として「繰り返しx回ごとにブラウザを開閉する」というものがあります。

本記事では、上記の負荷軽減を例としたワークフローのサンプルを紹介します。

※この方法は繰り返し7回ごとに何らかの操作をしたい!などのケースで汎用可能です。

 ワークフローの設定例

以下より「繰り返し3回ごとにブラウザを開き直す」例を紹介します。

繰り返し開閉されるブラウザを格納するための変数を用意します。

  • 変数に保存を設定します
  • 変数名を以下とします
    browser
  • 値は空欄のままとします。

※注意
この操作をしない場合、x回ごとに閉じたブラウザを操作することができなくなります。ブラウザのインプットがそのままでは利用できなくなるためです。

参考ページ:スコープ

  • 各要素について繰り返す(ForEach)を設定します
  • 繰り返すリストに以下を入力します
    ${["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"]}
  • 要素を格納数変数名に以下を入力します
    line
  • 詳細設定を開きます
  • 繰り返し回数を格納する変数名に以下を入力します
    index

ここで初めてブラウザを開きます。
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}

3とほぼ同じ要領でブラウザを閉じる設定をしていきます。

  • IFを設定し、条件式を以下とします
    ${(index + 1) % 3 === 0}
  • CloseBrowser(ブラウザを閉じる)をIFの中に設定します
  • インプットに以下を入力します
    ${browser}

※備考:3の条件式をブラウザを閉じる時にそのまま使うと、繰り返し3回目の終わりにブラウザを閉じることができず、繰り返し4回目の開始時点でブラウザが多重起動の状態になってしまいます。

# 変数に保存
+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 & 剰余

このページは役に立ちましたか?