如果日期与 google 个工作表不匹配,则插入空白行

Insert blank row if dates don't match google sheets

如果脚本检测到日期不同,我正在尝试找到一种在 google sheet 中插入空白行的方法。表面上看起来很简单,但我这几天一直在努力寻找解决方案。

下面是数据的示例:

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

显然这可以手动完成,但 sheet 是从 DFP 动态填充的,旨在成为自动报告。

有人有什么想法吗?

变成空格

我第一次走运运行。我实际上将日期列格式化为年月格式,以确保 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;
}

Sheet执行前:

Sheet执行后:

添加了更多无间距行:

然后再次执行: