自动移动特定日期的数据

管理员-RK Pareek Co

我的工作表的链接是:

https://docs.google.com/spreadsheets/d/1czJbRU5ELNft1IfGq1cABGe30j8BWjnffVCEa8A_AeY/edit?usp=sharing

如果N等于今天,我正在尝试移动数据。我已经设置好触发器。该脚本在晚上8点至9点之间的时间运行。如果没有提到K列,它将复制第8行中的数据。在当前的付款批准表中,运行脚本时,它会将数据复制到第1500行中。

我正在使用的脚本如下:

function copyrange() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName('Complete Invoice Sheet'); //source sheet
  var testrange = sheet.getRange('N:N');
  var testvalue = (testrange.setNumberFormat("@").getValues());
  var ds = ss.getSheetByName('Payment Approval Sheet'); //destination sheet
  var data = [];
  var j =[];
  var dt = new Date();
  var today = Utilities.formatDate(new Date(), 'GMT-0', 'dd/MM/yyyy')

  //Condition to check in N:N, if true, copy the same row to data array 
  for (i=0;i<testvalue.length;i++) {
    if (testvalue[i] == today) {
    data.push.apply(data,sheet.getRange(i+1,1,1,13).getValues());
  //Copy matched ROW numbers to j
    j.push(i);
}  
}
  //Copy data array to destination sheet
  ds.getRange(ds.getLastRow()+1,1,data.length,data[0].length).setValues(data);
}
马里奥斯

问题:

您当前的解决方案将考虑目标表的最后一行Payment Approval Sheet但是,在该工作表中,N栏中填充了复选框,直到工作表的底部为止。因此,getLastRow()返回不是您想要的N列底部的行。


说明:

代替使用getLastRow()而是通过使用filter()操作计算单元格A7之后的元素数,然后将其复制并粘贴到目标工作表时以此为起点:

  var start_row=ds.getRange('A8:A').getValues().filter(String).length +7; //calculate max row

  ds.getRange(start_row+1,1,data.length,data[0].length).setValues(data);

解:

function copyrange() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName('Complete Invoice Sheet'); //source sheet
  var testrange = sheet.getRange('K:K');
  var testvalue = (testrange.setNumberFormat("@").getValues());
  Logger.log(testvalue);
  var ds = ss.getSheetByName('Payment Approval Sheet'); //destination sheet
  var data = [];
  var j =[];
  var dt = new Date();
  var today = Utilities.formatDate(new Date(), 'GMT-0', 'dd/MM/yyyy')

  //Condition to check in N:N, if true, copy the same row to data array 
  for (i=0;i<testvalue.length;i++) {
    if (testvalue[i] == today) {
    data.push.apply(data,sheet.getRange(i+1,1,1,13).getValues());
  //Copy matched ROW numbers to j
    j.push(i);
}  
}
  //Copy data array to destination sheet
  
  var start_row=ds.getRange('A8:A').getValues().filter(String).length +7; //calculate max row

  ds.getRange(start_row+1,1,data.length,data[0].length).setValues(data);
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

特定日期的UINotification

来自分类Dev

选择特定日期之后的数据

来自分类Dev

查询Laravel 4中特定日期范围的数据记录

来自分类Dev

没有获取特定日期的所有数据

来自分类Dev

在mongodb中查找特定日期的数据

来自分类Dev

从特定日期时间范围获取数据

来自分类Dev

SQL Server查询,用于标识特定日期的缺失数据

来自分类Dev

如何备份特定日期和时间的mysql中的数据?

来自分类Dev

如何动态传递日期以获取特定日期的数据?

来自分类Dev

如何删除Pandas数据框中特定日期的行?

来自分类Dev

从熊猫数据框中消除特定日期的最快方法

来自分类Dev

计算距特定日期和数据范围的天数

来自分类Dev

如何检索特定日期范围内的数据?

来自分类Dev

Swift:如何将数据保存到特定日期

来自分类Dev

为熊猫中的特定日期范围过滤数据框

来自分类Dev

如果数据库中没有日期列,则在特定日期后自动删除数据库

来自分类Dev

在特定日期自动更新数据库列

来自分类Dev

删除包含特定日期之间数据的行

来自分类Dev

如何从PostgreSQL的特定日期获取特定数据?

来自分类Dev

如何在特定日期为数据框中的行移动时间戳

来自分类Dev

根据特定日期扩展数据集

来自分类Dev

特定日期获取数据的公式

来自分类Dev

输出特定日期

来自分类Dev

从特定日期时间范围获取数据

来自分类Dev

在特定日期关闭

来自分类Dev

从SQLite中的特定日期检索数据

来自分类Dev

特定日期的MS Access数据标准

来自分类Dev

特定日期缺失数据

来自分类Dev

选择特定日期的数据