【发布时间】:2019-09-03 10:26:37
【问题描述】:
我正在尝试编写一个脚本,将信息从 Google 表格中的一张表格复制到另一张表格,作为每日更新。信息按行排列(例如,第 5 行包含我要复制的所有信息,A 列是输入的日期) 如果条目(A 列)上的日期与今天的日期不匹配,则需要将整行转移到另一张工作表中。
我无法将包含输入信息的日期的单元格与今天的日期进行比较,然后捕获该单元格的行号,然后设置要复制的变量。
在新工作表上,需要扫描下一个空行的范围,然后将信息粘贴到下一个空行中。
目前我已经为一个单元格设置了复制/粘贴,但我将为一整行单元格设置它。
更新:我已经弄清楚如何复制信息。我要搜索的行从第 5 行的 Copy From 选项卡开始,我的代码可以搜索并将 B 列中输入的信息的日期与今天的日期进行比较。然后代码将该行中的信息复制到新的“复制到”选项卡中。
我现在想弄清楚如何从“复制自”标签中删除信息,以便它只在我的电子表格中存在一次,无论是在“复制自”标签上(如果输入的信息是今天或将来的日期) ) 或复制到选项卡上(如果输入的信息来自今天之前的日期)。我在底部添加了一行代码来执行此操作,但是当我运行我的代码时,它会复制一些信息,同时删除其他部分,并从今天的日期复制信息。有什么帮助吗?
function funcname() {
var Sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Copy From");
var Sheet2 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Copy To");
var ColumntoSearch = 2;
var LastRow = Sheet.getLastRow();
//Gets column to search for dates to compare to Today
var Range = Sheet.getRange(5, ColumntoSearch, LastRow, 1);
var Values = Range.getValues();
//Sets the amount of data to copy over
var NumberofColumns = 27;
var NumberofRows = 1;
var DestRow = Sheet2.getLastRow()+1;
//Compares all the Dates in the Copy From tab to Today
var dt=new Date();
var dt1=new Date(dt.getFullYear(),dt.getMonth(),dt.getDate());
var dv=new Date(dt.getFullYear(),dt.getMonth(),dt.getDate()).valueOf();
var d=0;
for (var i=0;i+d<Values.length;i++){
//If dates are less than today, they will be copied over to the Copy To tab
if(new Date(Values[i+d][0]).valueOf()<dv){
var RangetoCopy = Sheet.getRange((i+5), 1, NumberofRows, NumberofColumns);
var DestRange = Sheet2.getRange(DestRow, 1, NumberofRows, NumberofColumns);
DestRow++;
RangetoCopy.copyTo(DestRange);
Sheet.deleteRows(i+7);
}
}
}
【问题讨论】:
标签: google-apps-script google-sheets