Robotic Crowd

Robotic Crowd

繰り返しでメール送信

Author: Kanako Takei 68 views

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

 Excelファイルの読込を実行

まずは、localのストレージに置いているExcelファイルのデータを読込む動作をします。

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

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

 因みに、localストレージにあるExcelファイルの中身は下記の通りです。

 

 
「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アカウントを連携します

先ほど説明したように、itemにはExcelシートから取得したテーブルデータの中の1つの行レコードが入っています。具体的にはitemの中身は次のようになっています。

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

このレコードからアドレスを取得するには、${item[2][“text”]}と指定します。会社名や氏名を取得するには、それぞれ${item[0]}、${item[1]}と指定することになります。

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

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


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



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



# 変数に保存
+ac2lnJWL1Ey:
  action>: StoreValue
  key: rowNum
  value: +acJg2e3VnV5



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



# 変数に保存
+acoROwZld11:
  action>: StoreValue
  key: list
  value: +ac6k2R4MX5r



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



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

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