GASで値のみでシートバックアップを取る方法
* 値のみコピーだけで、バックアップ対象シートが新規だと、書式設定されていないセルが日付が数字で表示されてしまうので、書式のみコピーも同時に行った。
- シート名.Clear()だと書式もクリアされてしまうので、シート名.ClearContents()を使う
// バックアップ
function backup(baseID,baseName,backupID,backupName,format) {
var baseSheet = SpreadsheetApp.openById(baseID);
var baseSheetName = baseSheet.getSheetByName(baseName);
var backupSheet = SpreadsheetApp.openById(backupID);
var backupSheetName = backupSheet.getSheetByName(backupName);
backupSheetName.clearContents(); // 値のみクリア
var lastRow = baseSheetName.getLastRow();
var lastColumn = baseSheetName.getLastColumn();
var baseRange = baseSheetName.getRange(1, 1, lastRow, lastColumn);
var backupRange = backupSheetName.getRange(1, 1);
baseRange.copyTo(backupRange,{contentsOnly:true}); // 値のみコピー
if(format){
baseRange.copyTo(backupRange,{formatOnly:true}); // 書式のみコピー
}
// baseSheetName.getRange(1, 1, lastRow, lastColumn).copyTo(backupSheetName.getRange(1, 1), {contentsOnly:true});
// baseSheetName.getRange(1, 1, lastRow, lastColumn).copyTo(backupSheetName.getRange(1, 1), {formatOnly:true});
}
使い方
baseID = 'シートID';
baseName = 'シート名'
backupID = 'バックアップシートID';
backupName = 'バックアップシート名'
backup(baseID,baseName,backupID,backupName,true);