在Google表格中的日期范围内,每天添加一行并复制原始行中的信息

时间:2017-07-28 03:06:16

标签: date google-sheets range

我有一张Google表格,其中会转储Google表单中的信息。其中两列创建了一个日期范围,我希望该工作表能够自动为该范围的每个日期创建一行新信息,并为创建的每一行复制原始行中的所有其他信息。最后,该范围内的每个日期都有自己的行,无论是2天还是25天,并且通过表单收集的所有信息都存在于每天

Here is an example

1 个答案:

答案 0 :(得分:0)

这是一个可以帮到你的功能。运行后我的电子表格如下。我只是将它附加到起始数据的底部。

function convertDateRangetoRows()
{
  var ss=SpreadsheetApp.getActive();
  var sht=ss.getActiveSheet();
  var rng=sht.getDataRange();
  var rngA=rng.getValues();
  var rngB=[];
  var day=86400000;
  rngB.push(rngA[0]);
  for(var i=1;i<rngA.length;i++)
  {
    rngB.push(rngA[i]);  
    if(rngA[i][0] && rngA[i][1] && rngA[i][0]!=rngA[i][1])
    {
      var dt0=new Date(rngA[i][0]);
      var dt1=new Date(rngA[i][1]);
      var days=(dt1.valueOf()-dt0.valueOf())/day;
      var dt=dt0.valueOf();
      for(j=0;j<days;j++)
      {
        dt+=day;
        rngB.push([Utilities.formatDate(new Date(dt), Session.getScriptTimeZone(), "MM/dd/yyyy"),'',rngA[i][2],rngA[i][3],rngA[i][4]]);
      }
    }
   var intermediate='nothing'; 
  }
  var rngb=sht.getRange(sht.getLastRow()+1,1,rngB.length,rngB[0].length);
  rngb.setValues(rngB);
 var end='the end is near';
}

enter image description here