. , , . script oldValue
, , . script, .
- "backupfile"
var backupfilename = "backupfile";
. init()
. , , oldValue
, .onEdit(e)
. .- script
- →
- , .
- "" onEdit
- "" " ", ". "
onEdit(e)
, . , oldValue
newValue
. , , , oldValue
newValue
script.
script:
var backupfilename = "backupfile";
function copyToo(srcrange, dstrange) {
var dstSS = dstrange.getSheet().getParent();
var copiedsheet = srcrange.getSheet().copyTo(dstSS);
copiedsheet.getRange(srcrange.getA1Notation()).copyTo(dstrange);
dstSS.deleteSheet(copiedsheet);
}
function init() {
var srcss = SpreadsheetApp.getActiveSheet();
var range = srcss.getDataRange().getA1Notation();
var srcrange = srcss.getRange(range);
var backupfile = DriveApp.getFilesByName(backupfilename);
var dstid = backupfile.hasNext()
? backupfile.next().getId()
: SpreadsheetApp.create(backupfilename).getId();
var dstrange = SpreadsheetApp.openById(dstid).getSheets()[0].getRange(range);
copyToo(srcrange, dstrange);
PropertiesService.getScriptProperties().setProperty('backupfileid', dstid);
}
function onEdit(e) {
var newValue = e.range.getValues();
var dstid = PropertiesService.getScriptProperties().getProperty('backupfileid');
var oldValue = SpreadsheetApp
.openById(dstid)
.getSheets()[0]
.getRange(e.range.getA1Notation())
.getValues();
Logger.log("newValue %s", newValue)
Logger.log("oldValue %s", oldValue)
var range = e.source.getDataRange().getA1Notation();
var srcrange = e.source.getRange(range);
var dstrange = SpreadsheetApp.openById(dstid).getSheets()[0].getRange(range);
copyToo(srcrange, dstrange);
}
, .