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!

CSVファイルのアイテムをPower Automate(Web版)でsharepointのListsにインポートしたい。

解決したいこと

お世話になっております。
POWER AUTOMATE(WEB版)にて、以下のフローの実行を試みています。
Lists名「HLDnodecsv」
csv名は任意。
両方とも列名はそろえております。

image.png

Power Automateのフローは以下です。

1 csvファイルをsharepoint内のフォルダーにupload(トリガー)
2 csvファイルのインポート先のListsのアイテムをすべて削除。
3 uploadしたcsvのcontentsを取得
4 JSONの解析アクションで、csvから取得したcontentsをスキーマを使用してJSONに変換
5 4で変換されたアイテムをListsへ追加。

image.png

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

JSONの解析アクションにてエラーが出てしまい、Listsにデータ追加されません。
以下にスキーマを表示します。
"schema": {
"type": "array",
"items": {
"type": "object",
"properties": {
"RouteDate": {
"type": "string"
},
"AWB": {
"type": "string"
},
"MHCFlight": {
"type": "string"
},
"DispLoc": {
"type": "string"
},
"ShipperID": {
"type": "string"
},
"ShipperAcct": {
"type": "string"
},
"Ex-ExporterName": {
"type": "string"
},
"Identifier": {
"type": "string"
},
"ETD": {
"type": "string"
},
"DestLocCntryCd": {
"type": "string"
},
"SelectCd": {
"type": "string"
},
"Priority": {
"type": "string"
},
"Class": {
"type": "string"
},
"Batched": {
"type": "string"
},
"PRevw": {
"type": "string"
},
"DeclareNo": {
"type": "string"
},
"EDA": {
"type": "string"
},
"BII": {
"type": "string"
},
"LBChk": {
"type": "string"
},
"EDC": {
"type": "string"
},
"PCAT": {
"type": "string"
},
"FCAT": {
"type": "string"
},
"UserID": {
"type": "string"
},
"DeclnLocCd": {
"type": "string"
},
"ShiprPhone": {
"type": "string"
},
"MECFlag": {
"type": "string"
},
"MLBCKFlag": {
"type": "string"
},
"LastActionAt": {
"type": "string"
},
"Gateway": {
"type": "string"
}
}
}
}
}

自分で試したこと

データ操作の「作成」アクションでbase64tostring()も試しましたが、うまくいかないようでした。

0 likes

2Answer

一つ前のステップの「ファイルコンテンツの取得」の出力形式が 、次の「JSONの解析」が期待する形式になっていないと想定されます。
「ファイルコンテンツの取得」の定義内容を見せてもらえますか。

0Like

Comments

  1. @takaekokaz

    Questioner

    @nak435 さま。いつもお世話になっております。
    パラメータです。
    image.png
    ファイル識別子はトリガーからの取得しております。

    実行結果の出力です。
    image.png

    アクションのコードです。
    {
    "type": "OpenApiConnection",
    "inputs": {
    "parameters": {
    "dataset": "https://myfedex.sharepoint.com/teams/アドレス",
    "id": "@triggerBody()?['{Identifier}']",
    "inferContentType": true
    },
    "host": {
    "apiId": "/providers/Microsoft.PowerApps/apis/shared_sharepointonline",
    "connection": "shared_sharepointonline",
    "operationId": "GetFileContent"
    }
    },
    "runAfter": {
    "For_each_2": [
    "Succeeded"
    ]
    }
    }

  2. https---qiita-image-store.s3.ap-northeast-1.amazonaws.com-0-611808-9c4400b8-09b6-46c1-a076-dc3e76c0eb31.png

    赤で囲ったところを見ると、JSONではない(octet-stream)し、コンテンツも明らかに JSON ではないことが、直接の原因だと思います。

    試しに、$content の内容(Um91dGVEYXRILEFXQixNSENGbGInaHQsRGIz)を Base64 でデコードしてみると、次の文字列となりました。

    RouteDatH,AWB,MHCFlb'ht,Db3
    

    これは、CSVファイルの1行目の文字列と思われます。
    (「未加工の出力を表示する」から $content のすべての内容が見れるはずです。全体を Base64 でデコードしてみれば、CSVの2行目以降も確認できると思われます)

    対応としては、次の3通りが考えられます。

    1. この「ファイルコンテンツの取得」と次の「JSONの解析」の間に、「カンマ区切り 文字列 を JSON に変換」する処理ステップを追加する
    2. この「ファイルコンテンツの取得」の出力形式を カンマ区切り 文字列 からJSON に変更する
    3. 次の「JSONの解析」を「カンマ区切り 文字列 の解析」に変更する

    どれも 実現可否は不明です。やってみるしかありません。

  3. @takaekokaz

    Questioner

    この数日で48行あるcsvをカンマ区切り文字列にするところまで来ました。
    image.png
    ヘッダー行(1行目)以降の2行目の文字列です。(FOR NEXTの2番目)
    この直後にJSON解析するということでしょうか?
    {
    "body": {
    "name": "commaarray",
    "value": [
    ""25/09/10"",
    ""811111111111"",
    ""CANIE"",
    ""OKJA"",
    ""TBB"",
    ""881660164"",
    ""MULTI SHIPPER"",
    ""3"",
    """",
    ""AUTO CCO"",
    ""KG"",
    ""Steveconer"",
    ""STANISLAV US"",
    ""FRUA"",
    ""D8FRUA"",
    ""CCO"",
    """",
    """",
    ""2"",
    ""MMJB0101 #100 CLASSIC STRAIGHT 15.7OZ BUTTON FLY S"",
    ""1"",
    ""LO"",
    ""1"",
    ""1"",
    ""0"",
    """",
    "".5"",
    ""Y"",
    ""1"",
    """",
    """",
    """",
    """",
    """",
    """",
    """",
    """",
    """",
    ""0"",
    ""0"",
    ""JAPANRED CO.",
    "LTD(MOMOTARO JEANS)"",
    """",
    """",
    ""101-20975231"",
    ""81862368015"",
    """",
    """",
    ""25/09/10 17:36:03"",
    ""MIX"",
    ""
    ]
    }
    }

  4. 前回回答した(3通りが考えられる)対応策の何番目を試しているのでしょうか?

  5. @takaekokaz

    Questioner

    1番目を想定しております。

  6. Octet(Base64) → カンマ区切り文字列へ変換 → JSONへ変換 ですね。

    カンマ区切り文字列にするところまで来ました

    この直後にJSON解析するということでしょうか?

    このステップ内で「JSONへ変換」までできるのか、さらに「カンマ区切り文字列からJSONへ変換」のステップの追加が必要なのか、やってみないと分かりません。

CSVファイルってJSONの解析で中身を取れるのか不明ですが、
以前にCSVの中身を1行ごとに取り出して配列にする記事を書きましたので参考にしてください。
https://qiita.com/DaddyDaddy/items/4daf380b1997866423ab

配列にできたら、あとはAplly to eachでSharePointリストに行の追加で書き込んで行けるかと思います。

別案としては、これはできるのかどうかわかりませんが、もしかしたらSharePointへのHTTP要求でファイル取り込みできないかなぁと妄想しました。
できるのかな?
https://note.com/bunsekiya_tech/n/n793ff8ffff0d

0Like

Your answer might help someone💌