対象者
・Power Automateを使用している方
・Power Automateで取得したデータをスプレッドシートに反映させたい方
・Power Automateを利用したことはないが、利用してみたい方
大枠のイメージ
①PowerAutomateでデータを取得
②取得したデータをエクセルに保存
————-PowerAutomateでの設定————————-
③保存したエクセルファイルをCSVに変換
④GASでCSVからデータをコピーしてスプレッドシートに反映
以上4つで簡単に自動で反映させることができます。
※スプレッドシートはエクセルとCSVからデータを取得することができます。
ただ、エクセルから反映させようとすると挙動が安定しないので、おススメはしません。
PowerAutomate側での設定
PowerAutomate側の設定としては上記①②③が必要となります。
①に関しては取得したいデータがそれぞれ違うと思うので設定してください。
②は下記画像のエクセルに部分を操作して、最後に保存してください。
GASのコード
GAS側の設定で必要なのは③④になります。
該当するコードは下記になります。
GASの始め方はこちら
function getCSVFileId() {
var folderId = "フォルダのID"; // 対象のフォルダのIDを指定
var targetFileName = "CSVファイルの名前"; // 対象のCSVファイルの名前を指定
var folder = DriveApp.getFolderById(folderId);
var files = folder.getFilesByName(targetFileName);
if (files.hasNext()) {
var csvFile = files.next();
var csvFileId = csvFile.getId();
return csvFileId;
} else {
return null;
}
}
function pastecsvdatatospreadsheet() {
var csvFileId = getCSVFileId(); // CSVファイルのIDを取得
var csvfileId2 = getCSVFileId2();
if (csvFileId) {
var csvFile = DriveApp.getFileById(csvFileId);
var csvBlob = csvFile.getBlob();
var csvContent = csvBlob.getDataAsString('Shift_JIS');
var csvData = Utilities.parseCsv(csvContent);
var ss = SpreadsheetApp.getActiveSpreadsheet();
var targetSheet = ss.getSheetByName("スプレッドシート名");
targetSheet.getRange(1, 1, csvData.length, csvData[0].length).setValues(csvData);
} else {
Logger.log("CSVファイルが見つかりませんでした。");
}
pastecsvdatatospreadsheet();
設定が必要な値は下記3つになります。
var folderId = “フォルダのID”; // 対象のフォルダのIDを指定
CSVが格納されているGoogleDriveのフォルダIDを入力してください。
https://drive.google.com/drive/folders/フォルダID
var targetFileName = “CSVファイルの名前”; // 対象のCSVファイルの名前を指定
こちらはCSVファイルのファイル名を入力してください。
○○○.csvの○○○の部分です
var targetSheet = ss.getSheetByName(“スプレッドシート名”);
こちらは、CSVの内容を出力したいスプレッドシート名を入力してください。
最後に
いかがでしょうか。
スプレッドシートで社内共有されている方は重宝すると思います。