tanakatt1995
@tanakatt1995

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

Power AutomateでSharePoint上のExcelに記載されたSharePointのファイルURLを読み取り、異なるフォルダへコピーしたい

解決したいこと

Power Automateクラウドフローでmicrosoft formsの回答が格納されているSharePoint上のExcelから、添付されたファイルのURLを読み取り、異なるフォルダへコピーしたい

作成しようとしているもの

microsoft formsにファイルで添付しアンケートに回答します。
この回答が格納されているSharePoint上のExcelファイルから情報を読み取り、下記を実行したいです
・回答者のメールアドレスを読み取り、回答者ごとのフォルダを作成
・回答者がformsに添付したファイルのURLを読み取り、回答者ごとのフォルダへコピー

発生している問題・エラー

formsに添付されたファイルのファイル名によってPower AutomateでファイルのURLから情報の読み取りが成功する場合としない場合があります。
おそらくURLの変換方法によって起きている現象です
image.png

Power Automateの処理

SharePointに格納されたformsの回答結果を格納したExcelから添付ファイルURLを読み取るアクション
image.png
パラメータの設定 ※サイトアドレスは除いています
image.png
replaceの中身 ※[添付ファイルURL]の中のURLは後ほど記載
image.png

自分で試したこと

似たようなファイル名でエラーが起きるURLと起きないURLをまとめました

#エラーが起きるURL(=file以降がファイル名) ※[添付ファイルURL]の値

ファイル名:④test 2017XXX 4th_田中太郎TANAKA TARO
URL(固定までは仮値):https://xxx365.sharepoint.com/:x:/r/sites/msteams_0000xx/_layouts/15/Doc.aspx?sourcedoc=%0X00X00XX0-0X00-0X00-XXXXX-0XX0XXXX00X0%0X&file=%E2%91%A3test%202017XXX%204th_%E7%94%B0%E4%B8%AD%E5%A4%AA%E9%83%8ETANAKA%20TARO.xlsx&action=default&mobileredirect=true

ファイル名:Letter_2024XX_XXX__田中 太郎 TARO TANAKA1
URL(固定までは仮値):https://xxx365.sharepoint.com/:x:/r/sites/msteams_0000xx/_layouts/15/Doc.aspx?sourcedoc=%0X00X00XX0-0X00-0X00-XXXXX-0XX0XXXX00X0%0X&file=Letter_2024XX_XXX__%E7%94%B0%E4%B8%AD%20%E5%A4%AA%E9%83%8E%20TARO%20TANAKA1.xlsx&action=default&mobileredirect=true

#エラーが起きないURL(=file以降がファイル名)

ファイル名:④test4th_田中太郎TANAKATARO
URL(固定までは仮値):https://xxx365.sharepoint.com/:x:/r/sites/msteams_0000xx/_layouts/15/Doc.aspx?sourcedoc=%0X00X00XX0-0X00-0X00-XXXXX-0XX0XXXX00X0%0X&file=%E2%91%A3test4th_%E7%94%B0%E4%B8%AD%E5%A4%AA%E9%83%8ETANAKATARO.xlsx&action=default&mobileredirect=true

ファイル名:XXXXXXXXXLetter_2024XX_XXX__田中 太郎 TANAKA TARO
URL(固定までは仮値):https://xxx365.sharepoint.com/:x:/r/sites/msteams_0000xx/_layouts/15/Doc.aspx?sourcedoc=%0X00X00XX0-0X00-0X00-XXXXX-0XX0XXXX00X0%0X&file=XXXXXXXXXLetter_2024XX_XXX__%E7%94%B0%E4%B8%AD%20%E5%A4%AA%E9%83%8E%20TANAKA%20TARO.xlsx&action=default&mobileredirect=true

質問したいこと

Power Automate側でどのような設定すればURLの変換をうまくすることできるか教えていただきたいです。
※forms解答時にPower Automateを起動して添付ファイルを異動するやり方は要件が異なるため、できません。

参考にしたもの

Power Automate で SharePoint の絶対 URL からファイル情報を取得する

0

2Answer

URL内のfile=に続くファイル名が抽出できないということでしょうか?
「エラーが起きる」のエラーはなんでしょうか?

0Like

Comments

  1. @tanakatt1995

    Questioner

    >URL内のfile=に続くファイル名が抽出できないということでしょうか?
    →はい。あっております
    >「エラーが起きる」のエラーはなんでしょうか?
    image.png

    このようなエラーが起きます

  2. URL内のfile=に続くファイル名が抽出できないということでしょうか?

    →はい。あっております

    では、
    「replaceの中身」の item()?['添付ファイルURL'] の内容は
    どんな内容になっているのでしょうか?(機微な情報は伏せ字で構いません)
    例えば↓がそれでしょうか?

    https://sharepoint.com/:x:/r/sites/"固定"&file=%E2%91%A3test%202017XXX%204th_%E7%94%B0%E4%B8%AD%E5%A4%AA%E9%83%8ETANAKA%20TARO.xlsx&action=default&mobileredirect=true

    だとして、ここから抽出したい部分は、
    %E2%91%A3test%202017XXX%204th_%E7%94%B0%E4%B8%AD%E5%A4%AA%E9%83%8ETANAKA%20TARO.xlsx
    で、それは、
    ④test 2017XXX 4th_田中太郎TANAKA TARO.xlsx
    でしょうか?

    それとも、 item()?['添付ファイルURL'] の内容は、
    %E2%91%A3test%202017XXX%204th_%E7%94%B0%E4%B8%AD%E5%A4%AA%E9%83%8ETANAKA%20TARO.xlsx
    でしょうか?

  3. 添付ファイルURLが格納されている変数をattachedFileURLとすると、次の関数でファイル名が取得できます。

    decodeUriComponent(last(split(split( attachedFileURL , '&')[1], '=')))

ありがとうございます。
いただいた関数を使ってみたのですが、どのURLでもエラーが発生しました
エラー
image.png

フロー
image.png

パラメータ
image.png

関数
image.png

このような使い方であっていまうでしょうか

またURLは下記のような形式です
https://xxx365.sharepoint.com/:x:/r/sites/msteams_0000xx/_layouts/15/Doc.aspx?sourcedoc=%0X00X00XX0-0X00-0X00-XXXXX-0XX0XXXX00X0%0X&file=%E2%91%A3test4th_%E7%94%B0%E4%B8%AD%E5%A4%AA%E9%83%8ETANAKATARO.xlsx&action=default&mobileredirect=true

0Like

Comments

  1. またURLは下記のような形式です
    https://xxx365.sharepoint.com/:x:/r/sites/msteams_0000xx/_layouts/15/Doc.aspx?sourcedoc=%0X00X00XX0-0X00-0X00-XXXXX-0XX0XXXX00X0%0X&file=%E2%91%A3test4th_%E7%94%B0%E4%B8%AD%E5%A4%AA%E9%83%8ETANAKATARO.xlsx&action=default&mobileredirect=true

    これまでの内容(形式)と全然違いますね。それならば、次の関数になります。

    decodeUriComponent(last(split(split(last(split( attachedFileURL , '?')), '&')[1], '=')))
    attachedFileURLを置き換えてください)

  2. @tanakatt1995

    Questioner

    ありがとうございます。
    ご連絡が遅くなり申し訳ございません。
    結果、decodeUriComponent(last(split(split(last(split( attachedFileURL , '?')), '&')[1], '=')))をつかってもエラーが起きている状態です

    対象URL ※一部英字を「A」に、数字を「1」に置換
    https://xxx365.sharepoint.com/sites/msteams_1111fe/_layouts/15/Doc.aspx?sourcedoc=%1A11AAA111-1AAA-1111-AA11-11AAA1111A11%1A&file=%E2%91%A3test%202017XXX%204th_%E7%94%B0%E4%B8%AD%E5%A4%AA%E9%83%8ETANAKA%20TARO.xlsx&action=default&mobileredirect=true

    設定
    image.png

    ※triggerBody()?['text']にはURLを入力している
    image.png

    入力パラメータ
    {
    "dataset": "https://xxx365.sharepoint.com/sites/msteams_1111fe",
    "parameters/method": "GET",
    "parameters/uri": "_api/v2.0/shares/u!④test 2017XXX 4th_田中太郎TANAKA TARO.xlsx/driveitem/listitem",
    "parameters/headers": {
    "Accept": "application/json",
    "Content-Type": "application/json"
    }
    }

    出力:
    ステータスコード:400
    header:
    "Cache-Control": "no-store, no-cache",
    "Pragma": "no-cache",
    body:
    {
    "status": 400,
    "message": "Unexpected response from the service.....
    "error": {
    "message": "Unexpected response from the service"
    },
    "source": "sharepointonline-jw.azconn-jw-001.p.azurewebsites.net"
    }

    もしくは下記のような文字数が関係しているのでしょうか
    https://zenn.dev/pfirsich/articles/63711dbd361170

    参考にしたもの

    Power Automate で SharePoint の絶対 URL からファイル情報を取得する

  3. ファイル名を切り出したいと理解しているのですが、最終的に得たい情報が違っていますか?
    下記画像をダブルクリックして(拡大して)確認してください。

    exp1.png

  4. 切り出したファイル名を別なURLの一部とするなら、URLエンコードのままがよいということでしょうか。それであれば、次の関数になります。

    last(split(split(last(split( attachedFileURL , '?')), '&')[1], '='))
    
  5. @tanakatt1995

    Questioner

    やりたいことは下記のとおりです

    ファイルのURLからSharePoint上におかれているファイルの情報を読み取り、そのファイルを別のフォルダーへコピーしたい
    ・ファイル情報の取得(いま困っているポイント)
    ・ファイルのID取得
    ・ファイルのIDからファイルが格納されているパスを取得する
    ・取得したパスを元に格納したい先へファイルをコピーする

    以下のイメージがかなり近いです
    Power Automate で SharePoint の絶対 URL からファイル情報を取得する
    https://zenn.dev/karamem0/articles/2023_11_14_090000

    よろしくお願いいたします。

  6. すみませんが、当方は質問者さんと同じ環境は無いので、すべてを試すことができません。

    scr1.png

    ↑この画像からURL(URI)の一部だと思われるので、先ほどの関数を試してみてください。
    last(split(split(last(split( attachedFileURL , '?')), '&')[1], '='))


    また、
    当初の質問欄に書かれている、「#エラーが起きないURL」のときの、下記情報が見れるならば、もっとはっきりすると思います。取得できるでしょうか?

    入力パラメータ
    {
      "dataset": "https://xxx365.sharepoint.com/sites/msteams_1111fe",
      "parameters/method": "GET",
      "parameters/uri": "_api/v2.0/shares/u!④test 2017XXX 4th_田中太郎TANAKA   TARO.xlsx/driveitem/listitem",
      "parameters/headers": {
        "Accept": "application/json",
        "Content-Type": "application/json"
      }
    }
    

Your answer might help someone💌