我正在嘗試創建一個腳本,以便自動將電子表格中的日期加一。有沒有辦法做到這一點?自動日期腳本
例如,在我們的電子表格中,我們可能有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雲端硬盤中文檔的權限。 –
告訴我們你到目前爲止嘗試過的。你不能指望其他人爲你寫代碼。這就是你如何學習兄弟。 –
現在還不太清楚,您是否需要一個腳本來循環顯示電子表格範圍中的日期或在表格中插入日期的腳本? –