【課題】
以下の内容を満たすタスクを作成してみましょう。
■1. 事前準備
本内容では、Excelを使用します。
ローカルでExcelファイルを開くことのできる環境が必要です。
必要なファイルは以下のダウンロードサイトからダウンロードしてください。
https://www-1.sct.co.jp/download/automate/Sample_Task/00010128/00010128.zip
■2. 内容
--------------------------------------------------------------------------------------------------
Excel「ALL_DATA.xlsx」には、以下のようなデータが並んでいます。
(図1. 一覧データ)
これらのデータを、「顧客」ごとに以下のようなファイルとして整形します。
整形先のファイルは、「雛形.xlsx」を使用します。保存時は、「顧客名.xlsx」とします。
(図2. 整形後イメージ)
--------------------------------------------------------------------------------------------------
■3. 前提
・同じ顧客のデータは必ず連続しているものとします。離れた行に同じ顧客のデータが存在することはありません
■4. 処理を作成する上での禁則事項
・「最初からこの4社の顧客が登場する」という前提をおいた作りは禁止です
・「どの行 ~ どの行までがこの顧客のデータ」と前提をおいた作りは禁止です
■5.ヒント
(ヒントを見る際は、クリックして展開してください。)
ヒント1
今回の処理は、当社の「かんたん!AutoMateでRPA」の内容とは違い、1行につき1ファイルではありません。
したがって、「今はどの顧客のデータを処理しているか」を条件判断で使用する必要があります。
ヒント2
今回は、「同じ顧客のデータは必ず連続している」という前提があります。
つまり、「顧客の変わり目 = ファイルの変わり目」の図式が成立します。
ヒント3
データセットと「Loop - データセット」を利用する場合は、「現在処理中の行」と「次の行」の「顧客」を比較することで変わり目を検知できます。
現在の行のB列はそのまま「データセット名.B」、次の行のB列は「データセット名(データセット名.CurrentRow + 1).B」で表現可能です。
ただし現在の行が最終行の場合、次の行は存在せず条件式がエラーになるので対処が必要です。
ヒント4
最終行を処理している場合は、問答無用で処理が終了し、次の行と比較する必要がありません。
そのため、次の行と比較するロジックよりも前に最終行判断を行うロジックを置き、通らないようにすればエラーは発生しません。
現在が最終行かどうかは、「データセット名.CurrentRow」と「データセット名.TotalRows」が同じかどうかを判断すれば分かります。
ヒント5
データセットを利用する場合は、Excelを開閉するタイミングにご注意ください。
なお、最終行以外であれば、Excelを別名保存するタイミングと雛形をもう一度開く処理は連続する点にご注目ください。
その際、必要な変数の初期化も忘れずに実施してください。
なお、別解が何通りか考えられるため、必ずしもヒントに沿った内容を実施しなくてはならないわけではありません。
■6.解説
以下のページをご覧ください。
https://automate.sct.co.jp/knowledge/12058/