更新:打开工作表时,希望根据日期自动跳转到某个单元格

时间:2014-09-08 12:38:51

标签: google-apps-script

更新:根据之前的答案,我加入了人们的合唱团,要求谷歌重新启用这项工作的能力,他们显然已经遵守了。谢谢!

现在要弄清楚如何实现它,因为我对Google表格中的脚本一无所知。 :)


以下原始问题

我有一个电子表格,其中包含许多需要每日输入数据的不同表格。例如,有一张名为US-Sales的表格,每年的每一天都有一行。还有其他几个相同的表格,如英国销售,美租,等等。

我希望无论何时打开其中一张纸,我都会根据当前日期自动跳转到正确的行。

可能?如果是这样,怎么样?

提前非常感谢!

1 个答案:

答案 0 :(得分:2)

这通常可以通过一个带有onOpen()功能的简单脚本(在电子表格打开时执行)来实现,并激活所需的单元格(或表格)......

但是,由于新版电子表格(您最有可能使用)的更改,这已不再可能(目前为止),请参阅this issue (3928)并随意加注,以便Google团队充满希望会改变主意,让它再次成为可能; - )


修改:这个简单的代码适用于old version of spreadsheets,它不适用于新版本。

function onOpen() {
  SpreadsheetApp.getActive().getSheets()[0].getRange('B6').activate();// an arbitrary cell
  // not worth trying more complex cell selection (on date or anything else) while this is blocked by design .
}

有关此更改here及以下内容的详细信息。 enter image description here


编辑2:

2014年10月16日,此问题现已修复,上述代码也适用于新版电子表格。 details of issue here

自动激活对应于一年中某一天的行,您可以使用如下代码:

function onOpen() {
  var day = new Date().getDOY();// this uses a custom date method that returns the day of the year and is defined below
  SpreadsheetApp.getActive().getSheets()[0].getRange(day,1).activate();// in cloumn 1 for example. Add an offset if necessary (if headers...)

}

Date.prototype.getDOY = function() {
var onejan = new Date(this.getFullYear(),0,1);
return Math.ceil((this - onejan) / 86400000);
}