Google表格脚本-如何在同一电子表格中自动执行“如果复选框== true,然后在另一张表格中复制行”?

时间:2019-09-17 22:42:42

标签: google-apps-script google-sheets google-sheets-macros

伙计们,

首先,电子表格的名称为Daily File Distribution

所以这里的问题是: 如果'Daily!H2:H100'中的复选框为TRUE,则列'Daily!A2:F100'中的内容将被复制到'Record'的最后一行。然后清除'Daily!A2:F100'中的内容(因为删除行会破坏条件格式)。然后将复选框从'Daily!G2:H2'更改为FALSE

我是从录制的宏(仅用于Daily!A2:F2)中得到的:

function UntitledMacro() {
  var spreadsheet = SpreadsheetApp.getActive();
  spreadsheet.getRange('A2:F2').activate();
  spreadsheet.setCurrentCell(spreadsheet.getRange('F2'));
  spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Record'), true);
  spreadsheet.getRange('A134').activate();
  spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Daily'), true);
  spreadsheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true});
  spreadsheet.getRange('G2').activate();
  spreadsheet.getCurrentCell().setValue('FALSE');
  spreadsheet.getRange('H2').activate();
  spreadsheet.getCurrentCell().setValue('FALSE');
};

提前谢谢!

1 个答案:

答案 0 :(得分:1)

function runOne() {
  var ss=SpreadsheetApp.getActive();
  var sh1=ss.getSheetByName('Daily');
  var sh2=ss.getSheetByName('Record');
  var rg1=sh1.getRange(2,1,99,6);
  var rg2=sh1.getRange(2,7,99,2);
  var vA1=rg1.getValues();
  var vA2=rg2.getValues();
  for(var i=0;i<vA1.length;i++) {
    if(vA2[i][1]) {
      sh2.appendRow(vA1[i])
      sh1.getRange(i+2,1,1,vA1[i].length).clear({contentsOnly: true, skipFilteredRows: true});
      vA2[i][0]=false;
      vA2[i][1]=false;
    }
  }
  rg2.setValues(vA2);
}