我正在尝试创建一个脚本,以便自动将电子表格中的日期加一。有没有办法做到这一点?自动日期脚本
例如,在我们的电子表格中,我们可能有4个不同的日期需要提前一个。
2/17/2017
2/14/2017
2/15/2017
2/18/2017.
基本上每次我想运行这个脚本时,我希望电子表格中的所有日期都前进一个。任何帮助表示赞赏!
我正在尝试创建一个脚本,以便自动将电子表格中的日期加一。有没有办法做到这一点?自动日期脚本
例如,在我们的电子表格中,我们可能有4个不同的日期需要提前一个。
2/17/2017
2/14/2017
2/15/2017
2/18/2017.
基本上每次我想运行这个脚本时,我希望电子表格中的所有日期都前进一个。任何帮助表示赞赏!
我测试了一些财务数据,它似乎工作正常。它运行速度相当快。
如果你希望所有的电子表格的日期,然后incrDate的第一行应该是
var rng = SpreadsheetApp.getActiveSheet().getDataRange();
,我只是回去,并测试了为好。
这是包含菜单的code.gs文件的完整代码。所以你可能想要把它弄脏一点。
我是一个有趣的问题。其实最难的部分是计算出isDate函数。 谢谢
function onOpen() {
var ui = SpreadsheetApp.getUi();
ui.createMenu('Range Tools')
.addItem('Increment A Date by one day','incrDate')
.addToUi();
};
function incrDate()
{
var rng = SpreadsheetApp.getActiveRange(); // current selection
var rngA = rng.getValues();
if(rng.getNumRows() > 1 && rng.getNumColumns() > 1) // two dimension array
{
for(var i = 0; i < rngA.length; i++)
{
for(var j =0; j < rngA[i].length;j++)
{
if(isDate(rngA[i][j]))
{
rngA[i][j] = new Date(rngA[i][j].getTime() + (1 * 86400000));
}
}
}
}
if(rng.getNumRows() > 1 && rng.getNumColumns() == 1) //single column
{
for(var i = 0; i < rngA.length ; i++)
{
if(isDate(rngA[i][0]))
{
rngA[i][0] = new Date(rngA[i][0].getTime() + (1 * 86400000));
}
}
}
if(rng.getNumRows() == 1 && rng.getNumColumns() > 1)//single row
{
for(var i = 0; i < rngA[0].length ; i++)
{
if(isDate(rngA[0][i]))
{
rngA[0][i] = new Date(rngA[0][i].getTime() + (1 * 86400000));
}
}
}
if(rng.getNumRows() == 1 && rng.getNumColumns() == 1) //single cell
{
if(isDate(rngA[0][0]))
{
rngA[0][0] = new Date(rngA[0][0].getTime() + (1 * 86400000));
}
}
rng.setValues(rngA);
}
function isDate (x)
{
return (null != x) && !isNaN(x) && ("undefined" !== typeof x.getDate);
}
谢谢库珀!这很棒! –
很高兴能有所帮助。这是一个有趣的小项目,特别是isDate()函数。如果您需要任何帮助,请回来。 – Cooper
嘿库珀快速问题,当我运行该公式时,它要求获得编辑和查看Google云端硬盘中文档的权限。 –
告诉我们你到目前为止尝试过的。你不能指望其他人为你写代码。这就是你如何学习兄弟。 –
现在还不太清楚,您是否需要一个脚本来循环显示电子表格范围中的日期或在表格中插入日期的脚本? –