当前位置: 首页 > 知识库问答 >
问题:

如何将信息从一张纸复制到另一张纸?

顾泰平
2023-03-14

我试图写一个脚本,将信息从一张表复制到另一张表中的Google Sheets,作为每日更新。信息是按行显示的(例如。第5行有我想复制的所有信息,A列是输入的日期)如果条目上的日期(A列)与今天的日期不匹配,那么整行需要转移到另一张床单。

我无法将包含输入信息日期的单元格与今天的日期进行比较,然后捕获该单元格的行号,然后设置要复制的变量。

在新工作表上,它需要扫描下一个空行的范围,然后将信息粘贴到下一个空行中。

目前我已经为一个单元格设置了复制/粘贴功能,但我会为整行单元格设置它。

更新:我已经想出了如何复制信息。我要搜索的行从第5行的“复制自”选项卡开始,我的代码可以搜索并比较在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);
     }
   }
 }

共有1个答案

薛华奥
2023-03-14

试试这个:

该函数一次读取所有日期,并在午夜12:00将所有日期与今天进行比较的循环中运行。什么都行

function copyDateNotEqualToToday() {
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getSheetByName("Copy From");
  var sh2=ss.getSheetByName("New Sheet");
  var rg=sh.getRange(5,1,sh.getLastRow()-4,1);
  var vA=rg.getValues();
  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<vA.length;i++){
    if(new Date(vA[i+d][0]).valueOf()>=dv){
      vA.splice(i+d,1);
      d++;
    }
  }
  sh2.getRange(1,1,vA.length,1).setValues(vA);
}

我的输入表:

我的输出表:

我正在做的和你正在做的有点不同。我把你所谓的“价值”数组中的所有元素

但是,您要做的是将数据从源移动到目标,以便能够删除当前行作为循环。这是函数。

function copyIfLessThan() {
  var Sheet=SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Copy From");
  var Sheet2=SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Copy To");        
  var Range=Sheet.getRange(5,2,Sheet.getLastRow(),1);
  var Values=Range.getValues();
  var dt=new Date();
  var dv=new Date(dt.getFullYear(),dt.getMonth(),dt.getDate()).valueOf();
  var d=0;
  for(var i=0;i<Values.length;i++) {
    if(new Date(Values[i][0]).valueOf()<dv){
      var RangetoCopy=Sheet.getRange(i-d+6,1,1,27); 
      var DestRange=Sheet2.getRange(Sheet2.getLastRow()+1,1,1,27);
      RangetoCopy.copyTo(DestRange);
      Sheet.deleteRows(i-d+6);//removing rows not elements of Values Array
      d++;
    }
  }
}
 类似资料:
  • 我在一列中有两个具有唯一ID的工作表。我需要确保每当在一张图纸(Sheet1)中添加新ID时,它都会复制到另一张图纸(Sheet2)中的最后一个空行。IMPORTRANGE将不会作为动态工作。在其他工作表中添加的任何静态信息都与相应的ID无关。 在另一个线程[1]中,我得到了开发这个脚本的帮助,它将完全做到这一点。但是,这个脚本将在列A中的另一个工作表中插入数据。我如何修改脚本,以便我可以决定我希

  • 试图将一个范围从Sheet1复制到31张表上的相同范围,但仍然得到“运行时错误1004:工作表类的粘贴方法失败”,调试器指示是问题所在。我可以复制到一张单张没有问题,但不能复制到多张。我试着到处找,但不知道问题是什么(可能也很简单)。

  • 我正试图将所有工作表(7张)从workbook1(wb1)复制到WB2。wb1包含命令按钮,但我不希望它们出现在我的新工作簿中。我正在使用循环将单个工作表从一个工作簿复制到另一个工作簿。但是复制到第二张时出错了。我使用的代码如下:- 循环第一次成功运行,但对于i=2,代码给出错误

  • 我知道如果一列中有重复的值,如何应用条件格式,我知道如何使用公式引用多个工作表中的值;但是,如果值在另一个工作表中是重复的,我要做的是将格式应用于该值。 例如:我有“友谊”、“医疗”、“IT”和“营销”表,其中包含姓名和联系信息。电子邮件地址始终在E列中。 偶尔有人会从垂直领域,例如医疗保健领域,转移到友谊赛中。 当有人被添加到友谊赛工作表时,我希望他们在友谊赛工作表中的电子邮件单元格(E列)变为

  • 问题内容: 我有几个映像(第3方),例如,设置mysql,设置通用的php应用程序环境,设置第3方工具。 我想制作一个Dockerfile / Docker映像,将两个映像合并,然后运行更多命令 问题答案: 您可以将它们链接起来。你可以在这里找到更多 https://github.com/docker/docker/issues/3378#issuecomment-31314906 摘自上面的链接

  • 我有一个工作簿,有7张工作表,但只有6张数据。所有这7张表都有相同的结构/标题,只是最后一张表(表7)是空白的。 我想编写一个代码,将A2:J15范围内的表1-6的内容复制到表7工作表中。我目前有一个代码,我一直在使用,以测试,看看它是否工作,但代码我只有副本和粘贴从一个工作表仅(见下文)。有什么建议吗? 在下面的工作表中,我有两个工作表,我希望数据来自其中,另一个是目标工作表,我希望数据去那里: