google-apps-script - 有没有办法用脚本将数据从一张纸复制到另一张纸上?
问题描述
我希望将数据从一张表复制到另一张表,同时能够从第一张表中删除数据并使用表 1 中的新数据不断更新第二张表。
表 1 信息来自表单,我希望能够每天删除数据,因为添加更多数据时计算会变慢。然后我想把这些数据复制到 sheet2。同时保留输入的所有过去数据。
这是工作表的链接(旧的并保留)
https://docs.google.com/spreadsheets/d/1hLvbJL_21WWSsaEfBWj2XgKJAqlB6eIO6MwBFJAGmmI/edit?usp=sharing
这是脚本
{
var sheet = SpreadsheetApp.getActive();
var originSheet = sheet.getSheetByName("old");
var row = sheet.getSheetByName("old").getLastRow();
var col = sheet.getSheetByName("old").getLastColumn();
var listToCopy = originSheet.getRange('old!A1:' + col + row);
var destinationSheet = sheet.getSheetByName("keep");
var row1 = sheet.getSheetByName("keep").getLastRow();
var destinationColum = destinationSheet.getLastColumn();
listToCopy.copyTo(destinationSheet.getRange("keep!A" + (row1 + 1)));
spreadsheet.setActiveSheet(spreadsheet.getSheetByName("old"), true);
spreadsheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true});
}; ```
解决方案
解释:
鉴于
old
源工作表已连接到表单,最好在将数据粘贴到新工作表后删除行。否则,表单中的新数据将被附加到上次输入的行之后。要删除连续行,请使用deleteRows(rowPosition, howMany)。以下脚本将从源工作表中获取当前数据,将其粘贴到目标工作表并删除数据在源工作表中所在的行。我还检查指定范围内是否有数据要复制。
解决方案:
function copyTokeep() {
const ss = SpreadsheetApp.getActive();
const src_sh = ss.getSheetByName('old');
const src_lr = src_sh.getLastRow();
const dest_sh = ss.getSheetByName('keep');
const src_data = src_sh.getRange('A2:K'+src_lr).getValues();
if (src_lr>1){
src_sh.deleteRows(2,src_lr-1);
dest_sh.getRange(dest_sh.getLastRow()+1,1,src_data.length,src_data[0].length).setValues(src_data);
}
}
推荐阅读
- php - 从现在到时间 X 以 15 分钟间隔填充时间下拉列表
- javascript - 导入字符串值以传递给 JavaScript 中的 API 调用
- swift - 在 Swift 中传递匿名数组作为参数
- jquery - 正则表达式不适用于 IE11,但适用于 chrome/firefox
- c# - Setting up AWS API Gateway for proxy integration
- monodevelop - Get Monodevelop to use the downloaded GtkSharp
- java - Why are all of the values in my array null?
- c++ - Adding a Light Source to 3D objects in OpenGL
- c# - c# Picturebox Array Selection
- haskell - `join` 也是 endofunctor 的函数?