Docly Child

リストから特定のアイテムを探す

312 views

この記事では、SearchItemFromListアクションを使ってリストの中から特定のアイテムを検索する方法をご紹介します。


リスト内検索を利用する場面

・外部ストレージ内のフォルダ
・圧縮されたファイル
・Web上からダウンロードした複数ファイル
上記のようなリスト形式のアウトプットから、アイテムを絞り込むときに使用できます。

 SearchItemFromList

SearchItemFromListは、対象に設定したリスト内からアイテムを文字列で検索できます。マッチしたアイテムが単数・複数・存在しなかったいずれの場合でも、結果はリスト(配列)形式で出力されます。

このアクションではワイルドカードが使用できます。
指定する文字列の前・後・前後に何らかの文字(列)が入っている場合、それを「*」に置き換えることで検索が可能です。

例:リストから「川」が入っているものを取り出したい

この場合のアクションの設定は以下のようになります。

ワイルドカードが /(スラッシュ)を認識しないバグが確認されています(2024年6月現在)。
そのため、ファイルパスなどスラッシュが含まれた文字列内でワイルドカードを使った検索クエリを使用しても、正しく結果が得られないことがございます。

 

◎回避策

フォルダA/フォルダB/ファイルC.pdf

上記が検索対象である場合、最後のスラッシュ以降にある文字列で判定をお試しください。
例えば、以下検索クエリですとこのような結果になります。

検索クエリ結果
*フォルダB*失敗する
ファイルC*成功する

もしこちらの回避策が使えないような文字列である場合や、ご不明点がありましたら、お手数ですが左下のチャットボタンからサポートチームまでお問い合わせください。

 ワークフローの設定例

下記手順にてワークフローを設定します。

ここでは、GoogleDrive内のフォルダ内に、ファイル名に今年の数値が入っているものが見つかったとき、そのファイルを取得するというフローを作成しています。

  • GetTimeアクションのフォーマットをYYYYに指定し、今年の西暦の数値を取得します
  • 上記のアウトプットをStoreValueアクションの値に指定し、変数として保存します
  • ListItemsアクションのプロバイダーとディレクトリを指定し、フォルダ内アイテムの一覧を取得します
    (ファイル一覧の取得について、詳しくはこちら
 
今回指定している「年度別フォルダ」には、「YYYY.pdf」という名称のファイルが複数格納されている想定です。
SearchItemFromListアクションを設定します。
  • リストパラメータにListItmesのアウトプットを紐づけます
  • 検索クエリには手順1.で設定した変数とワイルドカードを用いて、以下を指定します
${thisYear}*

この後、条件分岐(IF)で使用するため、手順3.の結果を変数に保存します。

  • StoreValueアクションを設定し、値にSearchItemsFromListのアウトプットを紐づけます

クエリに合致するアイテムがない場合、この変数の中身は空の配列になります。
合致するアイテムがあった場合、変数の中身にリスト形式で保存されます。

IFを設定し、以下の条件式を入力します。
手順4.で設定した変数内に格納されている要素数が0より大きければ真となるような条件分岐としています。
(要素数を参照した条件式の作成について、詳しくはこちら

${searchResult.length > 0}

IFの中にGetFileアクションを追加します。

  • ファイルパラメータには、SearchItemFromListのアウトプットか、手順4.で設定した変数を指定します

該当ファイルがあった場合はファイルを取得し、ワークフローが終了します。
なかった場合はこのIFはスキップされ、終了になります。

# 日時を取得_今年を取得
+get_time_1:
  action>: GetTime
  format: YYYY
  timezone: 'Asia/Tokyo'
  relativeTime: ''
  private: false

# 変数に保存_今年
+store_value_1:
  action>: StoreValue
  key: thisYear
  value: +get_time_1
  private: false

# アイテム一覧を取得_年ごとのファイル一覧
+list_items_1:
  action>: ListItems
  provider: ''
  directory: ''
  includeFileId: false
  limit: 1000
  private: false
  meta:
    display:
      provider:
        type: chip
        label: ''
        icon: googledrive
      directory:
        label: ''
        icon: folder
        type: chip

# リスト内を検索_今年のフォルダを検索
+search_item_from_list_1:
  action>: SearchItemFromList
  list: +list_items_1
  query: '${thisYear}*'
  private: false

# 変数に保存_検索結果
+store_value_2:
  action>: StoreValue
  key: searchResult
  value: +search_item_from_list_1
  private: false

# 真のとき_今年のファイルがあったとき
+if_1:
  if>: ${searchResult.length > 0}
  _do:

    # ファイルを取得_該当ファイルを取得
    +get_file_1:
      action>: GetFile
      provider: ''
      filename: +search_item_from_list_1
      private: false
      meta:
        display:
          provider:
            type: chip
            label: ''
            icon: googledrive

リスト内を検索アイテム一覧を取得

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