Docly Child

繰り返しでメール送信

1498 views

この記事では、Excelファイルに記載されたアドレスに対してメールを自動送信するワークフローの作り方について説明します。

 Excelファイルの読み込みを実行

送信先アドレスを記載したExcelファイルは、AUTOROのストレージに保存しているものとします。

例では、シートのレイアウトは以下のようになっています。

 

まず、「GetFile」アクションをドロップします。

ファイル(ID、ファイル名)にlocalのストレージにあるファイルのIDを入力します。ストレージプロバイダはlocalと入力します。

「SelectSheet」アクションをドロップします。

エクセルファイル名に直前の「GetFile」アクションのアウトプットを設定します。ワークシート名は、読み込むシート名を入力します。
今回使用したエクセルファイルではSheet1となりました。

※ここでエラーを出すことが多いので要注意!
シート名を変更されている場合は、変更後のシート名を「SelectSheet」アクション内の”ワークシート名”欄に入力します。

最後に保存して実行します

実行すると、正しくワークシートを読み込めました。「SelectSheet」アクションのアウトプットとしては、ファイルパス、シート名、データの行数が出力されています。データの行数はこの後、データの値を読込む際に利用します。 

「StoreValue」アクションでエラーが出ている場合は、Filenameの後ろの空白が原因となっている場合がございます。空白が存在するか確認する手順は以下の通りです。

①ワークフロー画面右下にございます、表示設定の中のエディターモードをONにしてください。

ファイル取得アクションのfilenameの末尾から空白が存在する上記の画像のような状態ではエラーになってしまいます。


②空白の部分がなくなるまで空白を削除してください。

エラーの原因がfilenameの末尾にある空白だった場合はこの手順によって解決致します。

 Excelシートのデータを取得

読み込んだExcelシート内のデータを範囲指定で取得します。

まず、シート内のデータ行数を調べるために、「GetValueWithKey」アクションをドロップします。

 

※該当の取得箇所

キーにrowsを入力します。これで、直前の「SelectSheet」アクションのアウトプットのオブジェクトの中のrowsの値が取り出せます。この値は、「GetValueWithKey」アクションのアウトプット(Anything)として出力されます。

オブジェクトデータについてはこちらを参照ください

次に、「StoreValue」アクションをドロップします。

変数名にrowNumを指定します。変数名は任意に設定できます。値には直前の「GetValueWithKey」アクションのアウトプットの値を設定します。これで、rowNumを以降のアクションで変数のように扱うことができるようになりました。

変数についてはこちら

範囲を読み込むアクションをドロップします。
ワークシートには、先ほど作成した「SelectSheet」アクションのアウトプットを設定します。範囲(セルラベル)には、A2:C${rowNum}と入力します。

${変数名}の表記で、変数に格納した値を使用することができます。これでデータ数が増減しても動的に対応することができます。このケースでは、A2:C4の範囲のデータが二次元配列として取得できました。

取得した二次元配列を後の処理に使用するために、変数に格納しておきます。変数名はlistにしておきます。値には「ReadRange」アクションのアウトプット(Array)を設定します。

 繰り返し処理でメールを送信

Excelシートから取得したリストに記載されている全てのアドレスにメールを送信します。

まず、「ForEach」アクションをドロップします。
繰り返すリストには、先ほどExcelシートから取得した配列(変数list)を設定します。変数を使用するため${}で括っておきます。

要素を格納する変数名はitemと入力しました。名前は任意で設定できます。

これで、配列listに格納された要素を1つずつ取り出し、itemとして利用できます。

以降は、「ForEach」アクションの中に繰り返し処理するアクションを設置していきます。

「GmailSend」アクションを、「ForEach」アクションの中にドロップします。

各パラメータには下記の通りに設定します。

【送信先のアドレス】${item[2]["text"]}
【件名】メールテスト
【本文】${item[1] + "さん テストメールです"}
【プロバイダーID】右側のリンクボタンからコネクションに紐付けたGmailアカウントを連携します。

※変数の使い方について

「1.繰り返しを設定する」で説明した通り、itemにはExcelシートから取得したテーブルデータの中の1つの行レコードが入っています。
具体的にはitemの中身は次のようになっています。

[
  "株式会社A",
  "田中", 
  {"text":"xxxxx@xx.xx","hyperlink":"mailto:xxxxx@xx.xx"}
]

このレコードから情報を取得する場合、変数名itemを利用して以下のように指定します。
会社名:${item[0]}
氏名:${item[1]}
アドレス:${item[2]["text"]}

アドレス指定の考え方はオブジェクト/JSONをご参照ください。

最後に、保存して実行します

下記実行結果を見ると、Excelシートで取得した各アドレスに対してメールを送信できています。
# ファイルを取得
+get_file_1:
  action>: GetFile
  provider: local
  filename: ''
  meta:
    display:

# ワークシートを選択
+select_sheet_1:
  action>: SelectSheet
  filename: +get_file_1
  sheetname: list

# オブジェクトのキーの値を取得
+get_value_with_key_1:
  action>: GetValueWithKey
  object: +select_sheet_1
  key: rows

# 変数に保存
+store_value_1:
  action>: StoreValue
  key: rowNum
  value: +get_value_with_key_1

# 範囲を読み込む
+read_range_1:
  action>: ReadRange
  worksheet: +select_sheet_1
  range: 'A2:C${rowNum}'

# 変数に保存
+store_value_2:
  action>: StoreValue
  key: list
  value: +read_range_1

# 各要素について繰り返す
+for_each_1:
  for_each>:
    item: ${list}
  _do:

    # Gmailを送信する
    +gmail_send_1:
      action>: GmailSend
      provider: ''
      to: ${item[2]["text"]}
      subject: 'メールテスト'
      body: ${item[1] + "さん テストメールです"}
      attachments: ''
      from: ''
      meta:
        display:

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