google-apps-script - 在编辑之前复制已编辑的值
问题描述
我正在尝试设置一份每日报告,该报告将向我发送一封电子邮件,其中仅包含工作表中已编辑的行,还包括编辑之前的旧值。
我编写了以下脚本,当编辑指定范围时,整行被转移到另一个名为“new_values”的选项卡。
function onEdit_inRange(e,sheetName,sheetRange){
var sh=e.range.getSheet();
if(sh.getName()===sheetName){
var range = SpreadsheetApp.getActiveSheet().getRange(sheetRange);
var xy=[e.range.getColumn(),e.range.getRow()];
if (xy[0]>=range.getColumn() && xy[0]<=range.getLastColumn() && xy[1]>=range.getRow() && xy[1]<=range.getLastRow()) {
return e.range;
}
}
return false;
}
function onEdit(e){
var range=0;
if((range=onEdit_inRange(e,'sheet','M6:O'))){
// SpreadsheetApp.getUi().alert('You Edited a Cell INSIDE the Range!');
} else if ((range=onEdit_inRange(e,'sheet','Q6:Q'))) {
// SpreadsheetApp.getUi().alert('You Edited a Cell INSIDE the Range!');
}
var ss = e.range.getSheet();
//ss.getRange(e.range.getRow(),49) //set timestamp in column 49
//.setValue(new Date()); // Set time of edit in "G"
var appendSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('new_values');
var archiveLastRow = appendSheet.getLastRow();
Logger.log(archiveLastRow);
var archiveAppendRange = "new_values!" + (appendSheet.getLastRow() + 1) + ":" + (appendSheet.getLastRow() + 1);
Logger.log(archiveAppendRange);
var destRange = ss.getRange(archiveAppendRange);
Logger.log(destRange);
var sourceDataValues = ss.getRange(range.getRow(),1,1,49).copyTo(destRange);
Logger.log(sourceDataValues);
}
我无法做到的是让这个脚本在编辑旧值时也复制它们,并将它们移动到另一个单独的选项卡(称为“old_values”)。
当以与新值相同的方式编辑单元格时,如何复制旧值?
我的计划是我将合并两个表并通过电子邮件发送。
这是带有我的代码的示例电子表格:https ://docs.google.com/spreadsheets/d/1xzyVD7ElA0FMVC8sta6beDJCIwOQEMRqjhF5eW4mExI/copy
解决方案
推荐阅读
- go - 为什么我执行数组反转的 Rust 程序比等效的 Go 程序慢?
- vba - 过滤数据的直接复制不起作用
- kubernetes - Kubernetes 自动缩放。ScalingActive False
- reactjs - Babel 插件,用于构造函数之外的反应状态
- corda - 在 Corda 中,不是参与者的节点如何将状态存储在其保险库中?
- .htaccess - Htaccess:删除 .php 并重定向到自定义 404 页面
- android - 在 Android 中显示应用程序的触摸/点击
- sparql - wikidata 查询如何过滤找到的信息类型
- python - 加载 3D 模型但在 Python 中获取 2D 数组
- swift - 将大数据从firestore加载到表视图Swift