Google apps script 如何将特定行从一个工作表复制到另一个工作表(谷歌应用程序脚本)
这是我的第一篇帖子,所以请原谅我,如果这个问题的措辞与平台不太一样的话 我目前正在编写一个谷歌应用程序脚本,该脚本应该搜索一张工作表(名称:“[概述]所有案例”)及其行,以在Y列中找到某个值。该特定值为“否”。如果一行具有此值,则应将该行复制到另一张图纸的最后一行(“OPS_漏斗”)。然后该行应存在于两张图纸中。有人能帮忙吗 我已经经历了无数的线程,并没有能够收集到一个解决方案。到目前为止,我的解决方案不起作用,您可以在这里看到:Google apps script 如何将特定行从一个工作表复制到另一个工作表(谷歌应用程序脚本),google-apps-script,google-sheets,Google Apps Script,Google Sheets,这是我的第一篇帖子,所以请原谅我,如果这个问题的措辞与平台不太一样的话 我目前正在编写一个谷歌应用程序脚本,该脚本应该搜索一张工作表(名称:“[概述]所有案例”)及其行,以在Y列中找到某个值。该特定值为“否”。如果一行具有此值,则应将该行复制到另一张图纸的最后一行(“OPS_漏斗”)。然后该行应存在于两张图纸中。有人能帮忙吗 我已经经历了无数的线程,并没有能够收集到一个解决方案。到目前为止,我的解决方案不起作用,您可以在这里看到: function copy_to_OPS_FUNNEL() {
function copy_to_OPS_FUNNEL() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var srcSheet = ss.getSheetByName("[Overview] All_Cases");
var tarSheet = ss.getSheetByName("OPS_FUNNEL_new");
var lastRow = srcSheet.getLastRow();
for (var i = 2; i <= lastRow; i++) {
var cell = srcSheet.getRange("Y" + i);
var val = cell.getValue();
if (val == 'No') {
var srcRange = srcSheet.getRange("A" + i + ":B" + i);
var sourcevalues = srcRange.getValues();
var tarRow = tarSheet.getLastRow();
var tarRange = tarSheet.getRange("A" + (tarRow + i) + ":B" + (tarRow + i));
tarRange.setValues(sourcevalues);
srcSheet.getRange("Y"+(i+0).toString()).setValue("Yes");
}
else{
}
}
}
功能复制到操作漏斗(){
var ss=SpreadsheetApp.getActiveSpreadsheet();
var srcSheet=ss.getSheetByName(“[概述]所有案例”);
var tarSheet=ss.getSheetByName(“OPS_Tunnel_new”);
var lastRow=srcSheet.getLastRow();
对于(var i=2;i)解释:
你有两个目标:
将工作表[概述]中Y列中包含“否”的所有案例中的行复制到OPS\u漏斗\u new
工作表中
复制完成后,将工作表[概述]中的“否”更改为“是”
三大改进:
- 建议不要反复调用
getRange
和setRange
,阅读了解更多信息
- 您不需要for循环和if语句来查找列Y中包含“No”的数据。相反,您可以使用一行代码来查找这些数据:
const data = srcSheet.getDataRange().getValues().filter(r=>r[24]=='No');
- 然后,用一行代码将其复制到目标工作表:
const data = srcSheet.getDataRange().getValues().filter(r=>r[24]=='No');
tarSheet.getRange(tarSheet.getLastRow()+1,1,data.length,data[0].length).设置值(data);
解决方案:
感谢您的解决方案!它几乎可以完美地工作。是否有其他方法仅复制A列中的值?或从特定范围(例如:“A:T”)。提前感谢!@user14523871我的问题是您想要什么?列“A”或范围“A:T”?我只想将列“A”中的值从“概述所有案例”复制到“OPS\U漏斗”。您能再帮我做一件事吗?如果我想复制完整的行及其值和格式并将其粘贴到我的targetsheet中,我该如何更改您的上述解决方案?复制后,我想从源代码表中完全删除该行。条件是列中再次出现“否”(例如T)。非常感谢!@user14523871 Hi不幸的是stackoverflow不允许后续问题。请发布有关该修改的新问题。对于由此带来的不便,非常抱歉。请随时在此处提供新问题的url,以便我可以更快地找到它。