[PowerAutomate]複数のForm(クイズ)の回答を一括でエクスポートする

やりたいこと

複数のFormの回答を一括でファイルとしてエクスポートしたい。

Formsからフォームを作成した場合、エクセルファイルは1つずつダウンロードしなければいけない。また、フォームの回答がトリガーとなるコネクタがあるが、クイズの点数を参照することができない。

また、エクセル経由でフォームを作成した場合、通常のアンケートは作成できるが、クイズ形式では作成することができない。

ゆえにForm APIを利用してファイルの情報を一括で取得する。

フロー定義

全体像

変数定義

// formのid と出力先ファイル名の連想配列
formList = 
[
    {
        "formId": "hZAhgCspL0mUkN1CBLEpkQwKNEdKkLBBvXWIKo48aSJUOFZENE9KWEdRTlNWS1ZUUUlUVFVRTjk0NC4u",
        "exportFileName": "ファンタジア"
    },
    {
        "formId": "hZAhgCspL0mUkN1CBLEpkQwKNEdKkLBBvXWIKo48aSJURTlXMFNQOTZMUlFCMFJJRTkyVEI5NExQVi4u",
        "exportFileName": "エターニア"
    },
    {
       "formId": "hZAhgCspL0mUkN1CBLEpkQwKNEdKkLBBvXWIKo48aSJUNkMxTjdFVzJONVFIRk1YRkFEVDI5NE5BNi4u",
        "exportFileName": "シンフォニア"
    }
];

formURL = "https://forms.office.com";
formId = "";

// Share Point サイトのURL
workSharePointSite = "★★";
workDirectory = "Shared Documents/集計/";
workFilePath = "";
isExistsFile = "";

既存ファイルの削除_事前準備

恐ろしいことにpower automateに「ファイルが存在するか」のコネクタが存在しないため、Share Point REST APIを利用する必要がある。

既存ファイルの削除_存在チェック

// ファイルが存在していれば必ずGUIDというキーが存在する。
// キーの有無でファイルの有無を確認している。
isExistsFile = @{not(empty(outputs('HTTP通信_ファイルのメタデータを取得')?['body']?['d']?['GUID']))} 

既存ファイルの削除_削除処理

ファイルが存在していれば、その削除を行う。

クイズ情報の一括取得

メタデータの方で回答件数を、全量データの方でデータを取得している。

rowCount = @{body('HTTP通信_フォームのメタデータを取得')?['rowCount']}

取得したデータをそのままファイルとして保存する。