質問: Utilities.parseCsv(data); //セルA1からCSVの内容を書き込んでいく data_sh.getRange(2,1,csv.length,csv[0].length).setValues(csv); return; } } } } }
回答: ``` function syain_import() { //売上集計表 システムMTシート OPEN const sheetName = "データ"; const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName); // 対象のCSVファイルが置かれているフォルダ名、ファイル名を定義 const folderName = "CSV保管"; const fileName = "data.csv"; const folders = DriveApp.getFoldersByName(folderName); //フォルダとファイルの検索 while (folders.hasNext()) { var folder = folders.next(); if (folder.getName() !== folderName) { continue; } var files = folder.getFilesByName(fileName); while (files.hasNext()) { var file = files.next(); if (file.getName() !== fileName) { continue; } //設定しないでShift_JISのままだと文字化けする const data = file.getBlob().getDataAsString("Shift_JIS"); const csv = Utilities.parseCsv(data); // pattern A. 消す。消せるなら消すのが確実かつ安全 sheet.clearContent(); //セルA1からCSVの内容を書き込んでいく sheet.getRange(2,1,csv.length,csv[0].length).setValues(csv); return; // pattern B. 件数が合致していて、CSVが追記のみ起こるなら使える const r = sheet.getLastRow(); //セルA1からCSVの内容を書き込んでいく const tail = csv.slice(r-1); sheet.getRange(2,1,tail.length,tail[0].length).setValues(tail); return; // pattern C. A列がユニークキーだと仮定 const existing = sheet.getDataValues().map(function(e){return e[0]}).reduce(function(a,c){return a.concat(c);},[]); const diff = csv.filter(function(e){return existing.indexOf(e[0]) === -1;}); sheet.getRange(2,1,diff.length,diff[0].length).setValues(diff); return; } } } ```