javascript - 从工作表 A 复制行并将其附加到 Google 工作表的工作表 B 中
问题描述
我有包含几行的工作表 A,当单击复选框时,它应该复制到工作表 B 中。
表 A
当我选择一个复选框时,我希望该记录复制到工作表 B 中,并保留在工作表 A 中,只有 ID 和名称
这是我写的代码
function onEdit(event) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = event.source.getActiveSheet();
var r = event.source.getActiveRange();
if (s.getName() == "SheetA" && r.getColumn() == 8 && r.getValue() == true) {
var row = r.getRow();
var numColumns = s.getLastColumn() - 1;
var targetSheet1 = ss.getSheetByName("SheetB");
var target1 = targetSheet1.getRange(targetSheet1.getLastRow() + 1, 1);
s.getRange(row, 1, 1, numColumns).moveTo(target1);
Browser.msgBox("Your Record Submitted");
s.deleteRow(row);
}
}
提前致谢
解决方案
我相信你的目标如下。
- When the checkbox at the column "H" in "SheetA" is checked, you want to copy the values (columns "A" to "G") of the same row with the checkbox to the next row of the last row of "SheetB " 使用带有 Google Apps 脚本的简单触发器。
- 复制值时,您希望保留“A”和“B”列的值。
修改点:
- 在您的脚本中, by
s.getRange(row, 1, 1, numColumns).moveTo(target1);
会移动该行的所有值。这样,“A”和“B”列的值也被删除。而且, bys.deleteRow(row);
,该行被删除。
当以上几点反映到您的脚本时,它变成如下。
修改后的脚本:
function onEdit(event) {
var s = event.source.getActiveSheet();
var r = event.source.getActiveRange();
if (s.getName() == "SheetA" && r.getColumn() == 8 && r.getValue() === true) {
var row = r.getRow();
var numColumns = s.getLastColumn()-1;
var targetSheet1 = event.source.getSheetByName("SheetB");
var target1 = targetSheet1.getRange(targetSheet1.getLastRow() + 1, 1);
// I modified below script.
var range = s.getRange(row, 1, 1, numColumns);
if (!range.getValues()[0].every(e => e.toString() == "")) { // Added
range.copyTo(target1);
range.offset(0, 2, 1, 5).clearContent();
range.offset(0, 7).uncheck();
Browser.msgBox("Your Record Submitted");
}
}
}
- 使用此脚本时,请勾选“SheetA”中“H”列的复选框。这样,脚本就运行了。运行脚本时,“A”到“G”列的值被复制到“SheetB”,“C”到“G”列的值被清除。而且,该复选框未选中。这样,“A”和“B”列的值不会被删除。
- 使用时
range.offset(0, 2, 1, 6).clearContent();
,range.offset(0, 7).uncheck();
不需要使用。但是在这种情况下,复选框的值也被删除了。所以在这个修改中,我使用了uncheck()
. 这样,复选框的值更改为FALSE
。
参考:
推荐阅读
- visual-c++ - CTab_Ctrl 类是否需要附加属性才能在其“窗口”中绘制?
- python - 你可以在pygame中重复打印一个矩形的整个长度的图像吗?
- c++ - 阅读其他帖子后未定义对 vtable 问题的引用
- javascript - Gatsby GDPR Cookie Banner 如何实现多个 cookie + 禁用跟踪?
- android - Android Studios 应用登录失败,应用崩溃
- ios - 在核心数据中如何保存字典或数组,如字符串数据?
- data-warehouse - 作为事实表子集的维度有什么用?
- reactjs - 如何从承诺中返回数据,然后通过反应组件中的道具传递它
- css - 如何在悬停时暂停css动画
- python - 在 Python 中为 Old Macdonald 使用列表和循环