If statement 使用宏将某些行复制到重复的工作表
我有一张谷歌表格,我用它作为每月交接单,底部有一张待办事项清单 待办事项列表有一个复选框,然后是几列信息(日期、任务以及任务分配给谁) 我创建了一个按钮,它运行宏来复制工作表,以便在月底创建一个复制的工作表 我想复制一下待办事项列表中所有未被“勾选”为已完成的任务,但我不太擅长谷歌应用程序脚本中的逻辑 有人能帮我写if语句,将未勾选的行复制到复制的工作表中,或者复制所有行,然后删除勾选的行 谢谢,乔 更新:在玩了几个小时后,我得到了:If statement 使用宏将某些行复制到重复的工作表,if-statement,google-apps-script,google-sheets,logic,If Statement,Google Apps Script,Google Sheets,Logic,我有一张谷歌表格,我用它作为每月交接单,底部有一张待办事项清单 待办事项列表有一个复选框,然后是几列信息(日期、任务以及任务分配给谁) 我创建了一个按钮,它运行宏来复制工作表,以便在月底创建一个复制的工作表 我想复制一下待办事项列表中所有未被“勾选”为已完成的任务,但我不太擅长谷歌应用程序脚本中的逻辑 有人能帮我写if语句,将未勾选的行复制到复制的工作表中,或者复制所有行,然后删除勾选的行 谢谢,乔 更新:在玩了几个小时后,我得到了: function ToDoCopy() { va
function ToDoCopy() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var duplicateSheet = ss.getSheetByName("JUNE");
var originalSheet = ss.getSheetByName("MAY");
var lastRow = originalSheet.getLastRow() + 1;
for(var j = 24; j < lastRow; j++)
{
if(originalSheet.getRange(j,2).getValue() ==false && originalSheet.getRange(j,3).getValue() != 4)
{
var nextRow = duplicateSheet.getLastRow() +1;
var getCopyRange = originalSheet.getRange('B' + j + ':P' + j);
getCopyRange.copyTo(duplicateSheet.getRange(nextRow, 2));
}
}
}
函数ToDoCopy(){
var ss=SpreadsheetApp.getActiveSpreadsheet();
var duplicateSheet=ss.getSheetByName(“六月”);
var originalSheet=ss.getSheetByName(“MAY”);
var lastRow=originalSheet.getLastRow()+1;
对于(var j=24;j
它几乎可以工作,但它将复制的项目添加到新工作表的待办事项表下方,而不是添加到顶部。我想不出怎么解决这个问题
(p.s.
&&originalSheet.getRange(j,3.getValue)()=4 < <代码>部分是用于自动排序表的隐藏行,“4”意味着它基本上是空的。您是否使用调试器?这有助于快速诊断软件问题。还可以考虑添加临时诊断输出语句来帮助修改代码。例如,您可以添加一张“六月”和“5”两张表吗??似乎您有很多隐藏行和潜在的隐藏功能,这些功能在为此编写解决方案时可能是相关的。
function ToDoCopy() {
const ss = SpreadsheetApp.getActive();
const ssh = ss.getSheetByName("MAY");//source sheet
const sshsr = 24;//start row
const srg = ssh.getRange(sshsr, 1, ssh.getLastRow() - sshsr + 1, ssh.getLastColumn());
const svs = srg.getDisplayValues();//useful for me when using checkboxes
const dsh = ss.getSheetByName("JUNE");//destination sheet
if (dsh.getLastRow() - sshsr + 1 > 0) {
dsh.getRange(sshsr, 1, dsh.getLastRow() - sshsr + 1, dsh.getLastColumn()).clearContent().setDataValidation(null);//Clear destination range if not already cleared
}
let a = 0;//row add counter
svs.forEach((r, i) => {
if (r[1] == 'FALSE' && r[2] != 4) {
ssh.getRange(sshsr + i, 1, 1, ssh.getLastColumn()).copyTo(dsh.getRange(sshsr + a++, 1));
}
});
}