条件式の作成
この記事では、条件式を実際に作成してみます。多くのユーザーがつまづくポイントなのでしっかりと理解した上でワークフローを作成しましょう。
【できるようになること】
- 条件の整理
- 条件に必要なデータをリストアップ
- 条件式を設定
条件式作成の流れ
AUTOROで条件式を作成するためには、以下の流れが考えられます。
- 条件を整理する
- ワークフロー上で、条件に必要な情報を取得する
- 条件式を作成する
以下より、順を追って解説していきます。
1. 条件を整理する
条件式を作成するためには、そもそも何をやりたいのか、どのような条件を作成したいのか、背景と順序はどうなっているのか…などなどを、整理する必要があります。
この整理を行うにあたっては、以下に羅列した行為を実施することが有効な場合が多いです。
- 条件を日本語の文章で書き出してみる
- 要素の分解
- 必要な情報を洗い出す
ここでは、以下の条件を例として、後のフローに続いていくこととします。
「スプレッドシートのあるシートのうち、ステータスが未購入で、購入サイトの指定はexampleXXX.com、購入するものが画像のとき」
(条件を文章で書き出してみる が達成されました)
今回の条件は、以下のように分解できます。
今回の条件の作成に必要な情報は以下となります。
- スプレッドシートの「ステータス」列
- スプレッドシートの「購入サイト」列
- スプレッドシートの「購入素材」列
概ね以下となります。これはワークフロー作成のコツでもあります。
- やりたいことや条件を順序立てて日本語で記述する
- 事実を確認する
- 事実と解釈を分ける
- テスト用のワークフローなどを作成し、条件式が正しい結果を出力するかどうか、確認する
- 主語を明記する
2. 必要な情報を取得
条件分岐を設定する前に、条件分岐に必要な情報を集めるワークフローを設定しましょう。 今回の条件である場合は、次のようなワークフローで情報を取得します。
3. 条件式を作成
必要な情報をワークフローで取得することができたら、取得データを利用して条件式を作成していきます。
条件式には、変数/JavaScript/正規表現を利用することができます。
必要な情報と期待する結果を比較演算子で繋ぎ、要素ごとに式を作成します。
- ステータス列が未購入:
row[1] === "未購入"
- 購入サイト列がXXX.com:
row[2] === "exampleXXX.com"
- 購入素材列が画像:
row[3] === "画像"
「3つの条件すべてに一致するとき」であるので、&&
(論理積,AND,”かつ”)でそれぞれの条件式を結合します。完成した式は次のように${条件式}
のフォーマットで記載します。
${row[1] === "未購入" && row[2] === "exampleXXX.com" && row[3] === "画像"}
※論理和(OR,”または”)の条件式を作成する際は、||
でそれぞれの条件式を結合します。
Compareアクションを使って条件式を作成することも可能です。
詳細な方法はこちらをご参照ください。
今回の例では、論理積(AND)により複数の条件をまとめる必要があるため、Compareアクションより比較/論理演算子を使用することが推奨されます。
# 既存のスプレッドシートを取得 +get_spreadsheet_1: action>: GetSpreadsheet provider: '' spreadsheet_id: 'https://docs.google.com/spreadsheets/d/1gNmzDTecIO-q9zAD3OshLJ1J4JThwapxPdHrMIAKKUE/edit#gid=0' meta: display: # セルの値を取得_A~F列を2行目から取得 +get_cells_1: action>: GetCells spreadsheet: +get_spreadsheet_1 range: 'シート1!A2:F' # 各要素について繰り返す_シートから取得した各行 +for_each_1: for_each>: row: +get_cells_1 _do: # 真のとき_ステータスが未購入で、購入サイトの指定はexampleXXX.com、購入するものが画像のとき +if_1: if>: ${row[1] === "未購入" && row[2] === "exampleXXX.com" && row[3] === "画像"} _do: # テキストを作成(条件を満たしていた場合の処理) +text_1: action>: Text text: "条件を満たしています。\n\n${row[1]}\n${row[2]}\n${row[3]}"