【GAS】複数の子フォルダの指定ファイルをテンプレートファイルで一括置換する

既存のファイルを新しいファイルで入れ替えたかったので書いたGoogle Apps Scriptがこちら。

function myFunction() { var folderIds = getStoreFolderIds("parentFolderIdxxxxxxx12908430840"); //親フォルダID // console.log(folderIds); folderIds.forEach(i=> { var folderId =i; copyMitsumoriFileInFolder(folderId) }); // test // copyMitsumoriFileInFolder('folderIdxxxxxxx');//test用フォルダID
}
function copyMitsumoriFileInFolder(folderId){ const outputFolder = DriveApp.getFolderById(folderId); const files = outputFolder.getFiles(); var templateFile = DriveApp.getFileById('fileIdxxxxxxxx123456xxxxxxxx');//コピーするファイルID while (files.hasNext()) { const file = files.next(); const filename = file.getName(); if (filename.match('該当するファイル検索名')) { //条件に合致するファイル名のみ書き込み console.log(filename); // 以前のファイルはファイル名変更してゴミ箱へ file.setName("backup_"+filename); // file.setTrashed(true); //permission errorになる templateFile.makeCopy(filename,outputFolder) } }
}
function getStoreFolderIds(parentFolderId){ var target = DriveApp.getFolderById(parentFolderId); var folders = target.getFolders(); var folderIds = []; while (folders.hasNext()) { var folder = folders.next(); var folderName = folder.getName(); var folderId = folder.getId(); folderIds.push(folderId); // console.log(); } return folderIds;
}

setTrashed()がファイル作成者が自分でないと権限エラーになってうまく動かなかったので、ファイル削除は手動で行った。