QA・フローを検索する

キーワード入力後[Enter]キーを押すと、検索が実行されます

トップページ Forums Q&A 超初心者向け For eachについて 返信先: For eachについて

  • Tomo

    メンバー
    2023年4月3日 at 6:20 PM

    コメント失礼いたします!

    Excel内に作成したいフォルダ名が並んで記載されている場合、
    「Excelワークシートから読み取る」でフローを作成できるかと存じます。

    取得:ワークシートに含まれる使用可能なすべての値
    生成された変数:ExcelData

    上記の設定で、データテーブル型のExcelDataには、下記のようになります。
    ※A1のセルにABC-A、
    A2のセルにDEF-Aのように縦に並んでいる場合、

    #|Column1
    0|ABC-A
    1|DEF-A
    2|GHI-A
    3|JKL-A

    次に「For each」アクションを使用し、
    反復処理を行う値:%ExcelData%を設定します。

    「For each」と「End」の間に「フォルダの作成」アクションを挟みます。
    ※「For each」アクションで生成される変数:%CurrentItem%は、
    ABC-Aから降順に入れ替わり最後まで処理を行います。

    パラメーター
    新しいフォルダ-を次の場所に作成:作成したいフォルダーパスを指定
    新しいフォルダー名:%CurrentItem%

    上記の方法でフォルダを作成できるかと存じます。
    ーーーーーーーーーーーーーーーーー
    【画像の振り分けについて】
    画像の格納されているフォルダが一箇所であれば、「フォルダ-内のファイルを取得」アクションで、振り分ける画像の情報をまとめて取得できます。

    パラメーターのファイルフィルターで取得したい画像の形式合わせて絞り込むことができます。

    ※png形式の画像の場合

    パラメーター
    ファイルフィルター:*.png
    生成された変数:Files

    #|アイテム
    0|C:Users\ユーザー名\Desktop\振り分け用\画像データ¥ABC-A.png

    1|C:Users\ユーザー名\Desktop\振り分け用\画像データ¥DEF-A.png
    2|C:Users\ユーザー名\Desktop\振り分け用\画像データ¥GHI-A.png
    3|C:Users\ユーザー名\Desktop\振り分け用\画像データ¥JKL-A.png

    次に、先に作成したフォルダに画像を振り分けていきます。
    「フォルダ内のサブフォルダーを取得」アクションで、新しいフォルダを作成した階層を指定し、フォルダの情報を取得します。

    パラメーター
    フォルダ-:新しいフォルダを作成した階層パスを指定
    生成された変数:Folders

    #|アイテム

    0|C:Users\ユーザー名\Desktop\振り分け用\ABC-A
    1|C:Users\ユーザー名\Desktop\振り分け用\DEF-A
    2|C:Users\ユーザー名\Desktop\振り分け用\GHI-A
    3|C:Users\ユーザー名\Desktop\振り分け用\JL-A

    これにより、画像のパスと格納先のフォルダパスを取得できました。

    ここから、取得した画像リスト(Files)に対して「For each」アクションを使用します。

    パラメーター
    反復処理を行う値:%Filse%
    保存先:CurrentItem2

    続けて、「For each」アクションを使用します。
    今度は、取得したフォルダリスト(Folders)を設定します。

    反復処理を行う値:%Folders%
    保存先:CurrentItem3 ※同じ変数名には自動的に末尾に数字が付き区別されます。

    さらにその中に、「if」アクションを設定します。

    パラメーター

    最初のオペランド:%CurrentItem2.NameWithoutExtension%
    演算子:次を含む
    2番目のオペランド:%CurrentItem3.name%

    %Currentltem2.NameWithoutExtension%⇒ABC-A
    %CurrentItem3.Name%⇒ABC-A
    (CurrentItem3は、フォルダのため拡張子はありません)

    ※補足
    .FullName ⇒ファイルのフルパス。
    .Name ⇒拡張子を含むファイル名。
    .NameWithoutExtension ⇒拡張子を含まないファイル名。

    フォルダ名に対して、ファイル名が含まれているかを判定しています。

    次に「if」アクションの間に「ファイルの移動」アクションを入れます。
    これにより、ファイル名が含まれていた場合、フォルダに格納されます。

    パラメーター
    移動するファイル:%Currentltem2.name%
    宛先フォルダ-:
    C:\Users\ユーザー名\Desktop\振り分け用\%CurrentItem3.Name%
    ファイルが存在する場合:何もしない
    生成された変数:MovedFiles

    【重要】
    ファイルの移動と合わせて、「ループを抜ける」アクションを設定します。

    これにより、画像ファイル1つを対象として、
    ファイル名と各フォルダ名を比較し、フォルダ名にファイル名が含まれなければ、
    次のフォルダ名と比較し、一致する場合は、「ファイルの移動」アクションにより画像ファイルを格納し、「ループを抜ける」で次の画像ファイル処理に移行します。

    ※「ループを抜ける」一つのループから抜けます。

    文章のみ、かつ長文で恐れ入りますが、
    お役立ちできれば、幸いでございます。よろしくお願いいたします。