google-apps-script - 将一系列单元格从一行移动到另一个谷歌工作表并将其删除
问题描述
我得到了以下代码,但不是我想要的。
function onEdit(event) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = event.source.getActiveSheet();
var r = event.source.getActiveRange();
if(s.getName() == "Listed" && r.getColumn() == 21 && r.getValue() == "yes") {
var row = r.getRow();
var numColumns = s.getLastColumn();
var targetSheet = ss.getSheetByName("Sold");
var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
s.getRange(row, 1, 1, numColumns).moveTo(target);
s.deleteRow(row);
}
}
我有 2 张纸,一张用于列出的物品,一张用于出售的物品。当第 21 列说“是”时,我需要删除“列出”中的一行并将其粘贴到我的“已售”表中。
有没有办法只复制和粘贴从“列出”到“已售”的一系列单元格但删除整行?
解决方案
解释:
- 您的目标是仅复制编辑行的子集并将其粘贴到目标工作表,然后在源工作表中删除该行。
- 以下脚本将仅复制该行的前 10 列。
const numColumns = 10
根据您的需要进行调整。
解决方案:
function onEdit(e) {
const ss = e.source;
const s = e.source.getActiveSheet();
const row = e.range.getRow();
const col = e.range.getColumn();
const targetSheet = ss.getSheetByName("Sold");
const numColumns = 10;
if(s.getName() == "Listed" && col == 21 && e.range.getValue() == "yes") {
const s_range = s.getRange(row,1,1,numColumns);
const s_values = s_range.getValues();
s.deleteRow(row);
targetSheet.getRange(targetSheet.getLastRow() + 1, 1,s_values.length,s_values[0].length).setValues(s_values);
}
}
推荐阅读
- javascript - 同步 foreach 并渲染 2 个查询结果 NODEJS
- ios - 如何快速将 yyyy-MM-dd'T'HH:mm:ss.SSS'Z' 转换为 MM-dd-yyyy
- apache-spark - 结构流式演示,程序像批处理作业一样立即退出,不连续,火花
- c - 如何回调函数在 C 中的运行时工作
- javascript - 如何使 Javascript 倒计时 24 小时并在 24 小时后淡出 div 元素?
- python - Python mysql fetchall() 返回附加字符
- ruby-on-rails - 如何在rails中为异常编写rspec?
- python - 我已经按照Django的官方教程制作了一个投票应用程序,但我无法继续
- javascript - Vuex store WATCH 和 SUBSCRIBE 的区别
- r - na.rm = TRUE 未能在 unite() 上删除 NA