Google sheets Google sheets-循环搜索列,选择tow
我有一个谷歌电子表格,我还有最后一个我似乎无法解决的问题 我在这个脚本中添加了一个按钮,当我按下按钮时,它会触发AddClient函数 如何使下面的脚本向下循环第3列中的所有行,搜索yes值,当它找到该值时,将其下面的行复制到工作表“client”中,然后停止Google sheets Google sheets-循环搜索列,选择tow,google-sheets,Google Sheets,我有一个谷歌电子表格,我还有最后一个我似乎无法解决的问题 我在这个脚本中添加了一个按钮,当我按下按钮时,它会触发AddClient函数 如何使下面的脚本向下循环第3列中的所有行,搜索yes值,当它找到该值时,将其下面的行复制到工作表“client”中,然后停止 function AddClient(event) { var ss = SpreadsheetApp.getActiveSpreadsheet(); var s = event.source.getActiveSheet();
function AddClient(event) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = event.source.getActiveSheet();
var r = event.source.getActiveRange();
if(s.getName() == "SETUP" && r.getColumn() == 3 && r.getValue() == "yes") {
var row = r.getRow() + 1; // Add 1 to the active row
var targetSheet = ss.getSheetByName("client");
var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
s.getRange(row, 2, 1, 4).copyTo(target, {contentsOnly:true}); //Only selecting column 2, then the following 4 columns
}
}
编辑*
示例文件:
非常感谢您的帮助
干杯,
雷尔
appendRow
方法,负责查找最后一行所涉及的簿记工作function AddClient() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var data = ss.getSheetByName("SETUP").getRange(25, 2, 1, 4).getValues()[0];
ss.getSheetByName("client").appendRow(data);
}
function AddClient() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var data = ss.getSheetByName("SETUP").getRange(25, 2, 1, 4).getValues()[0];
var clients = ss.getSheetByName("client").getDataRange().getValues();
if (!clients.filter(function(row) {return data.join("|") === row.join("|");})) {
ss.getSheetByName("client").appendRow(data);
}
}
编辑:
要删除重复项,可以执行以下操作:
function AddClient() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var data = ss.getSheetByName("SETUP").getRange(25, 2, 1, 4).getValues()[0];
ss.getSheetByName("client").appendRow(data);
}
function AddClient() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var data = ss.getSheetByName("SETUP").getRange(25, 2, 1, 4).getValues()[0];
var clients = ss.getSheetByName("client").getDataRange().getValues();
if (!clients.filter(function(row) {return data.join("|") === row.join("|");})) {
ss.getSheetByName("client").appendRow(data);
}
}
请注意,对于特定示例,由于前导零被截断,因此存在一些问题。工作表有点奇怪,有时甚至当您将单元格格式设置为文本时,也会试图强制格式为数字…您试图设计的交互是什么?有人在第三列输入“是”,该行被复制到另一个工作表?对不起,现在我更不清楚了,你是否有一个按钮,脚本会用“是”复制所有内容,还是到处都有“是”按钮,每行都有一个按钮?也许一个屏幕截图,或者更好的是一个电子表格样本会有助于抱歉没有清理任何内容:P我再次编辑,添加的示例文档与我的完全相同,但数据名称不同。谢谢,这使它变得更简单,请查看我的答案非常好的解决方案,因为我用按钮中途改变了方向,我有一个想法,它可以被优化很多。。非常感谢!是否可以让它检查double条目并编辑输出的格式?感谢您花时间来帮助!假定用于检测重复项的脚本不起作用。它甚至不会附加新的数据。另外,当我使用“.copyTo(target,{contentsOnly:true})”时,contentsOnly为我解决了格式问题。。这是实现我需要的更好的解决方案吗?因为这是对客户的出价,所以格式非常重要。对于邮政编码中的0,可能大多数情况都是这样。