【发布时间】:2017-07-28 03:06:16
【问题描述】:
我有一个 Google 表格,其中转储了来自 Google 表单的信息。其中两列创建了一个日期范围,我希望工作表为该范围的每个日期自动创建一个新的信息行,并为创建的每一行从原始行复制所有其他信息。最后,范围内的每个日期都有自己的行,无论是 2 天还是 25 天,并且通过表单收集的所有信息每天都存在
【问题讨论】:
标签: date google-sheets range
我有一个 Google 表格,其中转储了来自 Google 表单的信息。其中两列创建了一个日期范围,我希望工作表为该范围的每个日期自动创建一个新的信息行,并为创建的每一行从原始行复制所有其他信息。最后,范围内的每个日期都有自己的行,无论是 2 天还是 25 天,并且通过表单收集的所有信息每天都存在
【问题讨论】:
标签: date google-sheets range
这是一个可以为您解决问题的函数。运行后我的电子表格在下方。我只是将它附加到起始数据的底部。
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';
}
【讨论】: