Google电子表格/文档,在Open上跳至当前日期单元格

罗纳德

我已经搜索了该主题并找到了一些线索-但是,这些主题中的所有答案(通常以脚本的形式)都没有对我证明是成功的。我想我搞砸了一些变量。

我在Google文档中有一个电子表格,其中包含工作清单。在B1:OI1行中,有超过一年的日期,即B1 = 2015年5月1日星期五,B2 = 2015年5月2日星期六,OI = 2016年6月1日星期三。

无论何时打开工作表,我都希望工作表跳至今天或本周的星期一。

我该怎么做?

先谢谢您的帮助!

塞尔萨·萨萨斯

我想您看过这篇帖子,OP希望在工作表中更改今天日期的背景色,您的情况非常相似,只是-如果我了解得很好-今天不一定会出现在工作表中。

因此,我们需要找到离今天最近的日期?您提到它必须是星期一,我还没走那么远,下面的脚本在A列中找到最接近的日期,您只需通过调整数组中的索引就可以根据需要对其进行调整。(不要忘了数组从0开始计数)

代码:

function onOpen() { // runs automatically
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sh = ss.getActiveSheet();
  var data = sh.getDataRange().getValues();
  var today = new Date().setHours(0,0,0,0);
  var diffref = today;
  var diff;
  var idx;
  for(var n=0;n<data.length;n++){
    var date = new Date(data[n][0]).setHours(0,0,0,0);
    diff=today-date;
    if(diff==0){break}
    Logger.log("diffref = "+diffref+" today-date = diff = "+diff);
    if(diff < diffref && diff > 0){idx=n ; diffref=diff}
    }
  if(n==data.length){n=idx}
  n++;
  sh.getRange(n, 1).activate();
}

编辑:

要检查星期几(是的,我天生好奇;-),您可以尝试更改这种情况:

Logger.log("diffref = "+diffref+" today-date = diff = "+diff+" day = "+new Date(date).getDay());
if(diff < diffref && diff > 0 && new Date(date).getDay()==1){idx=n ; diffref=diff}

从我的测试来看,它似乎可以正常工作。


编辑2:

在您发表评论之后,您所寻找的东西似乎要简单得多:

function onOpen2() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sh = ss.getActiveSheet();
  var data = sh.getDataRange().getValues();
  var today = new Date().setHours(0,0,0,0);
  for(var n=0;n<data[0].length;n++){
    var date = new Date(data[0][n]).setHours(0,0,0,0);
    if(date==today){break};
  }
  n++;
  sh.getRange(1,n).activate();
}

编辑3

由于某种原因,我忽略了(请任何人提供建议!),您的工作表不从单元格中的日期返回日期值,而是返回原始电子表格值,该值是整数,对应于自1899年12月30日以来的天数...

因此,我要做的是从javascripttoday变量中减去此偏移值,将其除以一天中的毫秒数(JS计数以毫秒为单位),然后取结果的整数部分。我承认有点麻烦,但我没有找到更简单的方法...

真正奇怪的是,在我尝试的任何其他工作表中,日期总是作为日期返回...

无论如何,这暂时是您电子表格的工作代码:

function onOpen() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sh = ss.getActiveSheet();
  var data = sh.getDataRange().getValues();
  var offsetToSS = new Date('1899/12/30').setHours(0,0,0,0);
  var today = parseInt((new Date().setHours(0,0,0,0)-offsetToSS)/86400000,10)+1;
  for(var n=0;n<data[0].length;n++){
    var date = data[0][n];
    Logger.log("date = "+data[0][n]+" =? "+today);
    if(date==today){break};
  }
  n++;
  sh.getRange(1,n).activate();
}

最后说明:为获得更好的用户体验,请在此之后添加此行代码var sh = ss.getActiveSheet();

sh.getRange(1,sh.getLastColumn()).activate();

这将在激活今天的列之前选择最后一列,并将所选内容放置在更“自然”的左侧(工作表中冻结的列附近)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

打开电子表格时,使用当前日期填充单元格VBA

google电子表格:比较日期和单元格区域中的日期

捕获编辑单元格时的日期和时间(Google电子表格)

使用 where 子句中的日期计算非数字单元格 [Google 电子表格]

在电子表格中的日期时间单元格中使用查询

如何在LibreOffice Calc电子表格中查找引用当前单元格的单元格?

用光标在最后一个工作单元格上打开Google电子表格

在 HTML 表单输入上显示来自谷歌电子表格的单元格值

将另一个电子表格中的彩色单元格复制到当前电子表格

Google电子表格条件格式-如果值大于则突出显示单元格

Google电子表格中单元格的条件唯一数

COUNTA是否在计算新的Google电子表格中的空白(空)单元格?

Google 电子表格 - 创建增量单元格的值按钮

按行而不是按单元格填充Google电子表格

Google 电子表格根据单元格值更改下拉选项

更新Google电子表格单元格(python)

应用脚本不会总是更新Google电子表格单元格的值

Google电子表格-通过地址过滤单元格

在单元格中插入 Google 电子表格 ID

从Google电子表格中的单元格中提取类名称

从Google电子表格单元格解析Json

删除单元格Google电子表格中的换行符

如何使用Google Apps脚本向电子表格单元格添加链接

使用python更新Google电子表格的单元格背景颜色

Google电子表格中单元格文本的sha3-256

Google Meet startTimeCode使用,是否可以在电子表格单元格中查找?

从外部页面读取 Google 电子表格单元格值

如何从 Google 电子表格单元格下载纯文本?

Google 电子表格:根据数据验证选择更改单元格值