0

ユーザーがいくつかの質問に答えて写真をアップロードできるようにする Microsoft フォームがあります。すべての応答は、Power Automate フローを使用して Excel テーブルに保存されます。これらの回答は文字列として保存され、画像の OneDrive への URL ポイントも Excel テーブルに保存されます。

OK、その URL を使用して画像を Excel に挿入する方法について多くの人が質問していますが、これまでのところ解決策はありません。Microsoft からの標準的な回答は機能していないようです。URL が OneDrive / SharePoint を指している場合は常にフェッチ エラーが発生します (このリンクを参照してください) 。

私は別の側面から同じ質問をしています。パワーオートメーションフローでファイルコンテンツを取得できます。ファイル コンテンツをダウンロードして検査すると、次のようなデータ構造になります (セキュリティ上の理由から、これは完全なファイル コンテンツではありません)。

Content-Disposition":"添付; filename="16337833927412488499783584031011.jpg"","Content-Type":"image/jpeg","Expires":"-1"},"body":{"$content-type":"image/jpeg"," $content":"

私が知る限り、"body":{"$content-type":"image/jpeg","$content": の後の文字列は、/9j/4UVORX から ...== までが base64 文字列です。論理的にOfficeScriptに渡すことができる画像で、worksheet.AddImage APIを呼び出して、画像全体をExcelワークシートに画像として直接挿入します。

filecontent を power autoate フローから OfficeScript に渡す場合、OfficeScript を使用して base64 文字列を抽出する方法を知っている人はいますか?

===アドオン===

いくつかの調査の後、json関数を使用してファイルコンテンツから正しい文字列を抽出することができました:

json(outputs('Get_file_content')?['body']?['$content'])

ここに画像の説明を入力

ただし、次のエラーが表示されます: Action 'Compose' failed...

ここに画像の説明を入力

ああ...アイデアが不足しています...

4

1 に答える 1

2

このフローは私にとってはうまくいきました: フォームからアップロードされた画像を Excel に挿入する Power Automate フロー

アクションでのContent表現は次のようなものです。Parse JSON

first(json(outputs('Get_response_details')?['body/r926aef8d3cf24b569e10513f3d540e0a']))

フォームでアップロードしたファイルの情報を取得することです。実際の表現は、フォームによって異なる場合があります。正しいフォーム レスポンス フィールドを に挿入するだけで済みますfirst(json( ))JSON 式を解析する

アクションでSchema使用されるは次のとおりです。Parse JSON

{
    "type": "object",
    "properties": {
        "name": {
            "type": "string"
        },
        "link": {
            "type": "string"
        },
        "id": {
            "type": "string"
        },
        "type": {},
        "size": {
            "type": "integer"
        },
        "referenceId": {
            "type": "string"
        },
        "driveId": {
            "type": "string"
        },
        "status": {
            "type": "integer"
        },
        "uploadSessionUrl": {}
    }
}

そして、アクションbase64ImageStringに渡すために使用される式は次のとおりです。Run script

base64(outputs('Get_file_content')?['body'])

最後に、ここで使用したスクリプトに興味がある場合:

function main(workbook: ExcelScript.Workbook, sheetName: string, address: string, base64ImageString: string) {
  let sheet = workbook.getWorksheet(sheetName);
  let range = sheet.getRange(address);
  let image = sheet.addImage(base64ImageString);
  image.setTop(range.getTop());
  image.setLeft(range.getLeft());
}
于 2021-10-11T16:52:05.387 に答える