如果日期与Google表格不匹配,请插入空行

时间:2017-09-07 19:56:15

标签: javascript google-apps-script google-sheets google-spreadsheet-api

如果脚本检测到日期不同,我试图找到一种在Google工作表中插入空白行的方法。从表面上看似乎很简单,但我一直试图找到解决方案。

以下是数据的示例:

Month   Brand   Size    Impressions
2017/1  Nike    300x25  500
2017/1  Nike    300x250 300
2017/2  Nike    728x90  100
2017/2  Adidas  300x250 400

我需要做的是,当脚本检测到2017/1和2017/2之间的变化时,它将插入两个空白行,以便将月份分开。

像这样:

Month   Brand   Size    Impressions
2017/1  Nike    300x25  500
2017/1  Nike    300x250 300


2017/2  Nike    728x90  100
2017/2  Adidas  300x250 400

显然,这可以手动完成,但工作表是从DFP动态填充的,并且是一份自动报告。

有人有什么想法吗?

1 个答案:

答案 0 :(得分:1)

更改为空格

我第一次跑出去了。我实际上格式化了年月格式的日期列,以确保getMonth()函数能够正常工作。

function spacesIntoChanges() 
{
    var ss=SpreadsheetApp.getActive();
    var sh=ss.getSheetByName('Sheet1');
    var rg=sh.getDataRange();
    var vA=rg.getValues();
    var spaces=[];
    for(var i=2;i<vA.length;i++)
    {
      if(vA[i][0] && vA[i-1][0] && new Date(vA[i][0]).getMonth() != new Date(vA[i-1][0]).getMonth())//
      {
        spaces.push(i);
      }
    }
    spaces.sort(compareNumbers);
    for(var i=vA.length-1;i>=2;i--)
    {
      if(spaces.indexOf(i)>-1)
      {
        sh.insertRows(Number(i+1), 2);
      }
    }
}


function compareNumbers(a,b)
{
  return b-a;
}

执行前的工作表:

enter image description here

执行后的表格:

enter image description here

添加了一些不间隔的行:

enter image description here

然后再次执行:

enter image description here