Google 表格/应用程序脚本可打开到今天的当前日期(如果日期位于列中)

问题描述 投票:0回答:1

无法在 Apps 脚本中找到适用于 Google 表格并打开到今天当前日期的函数。

我找到的所有公式都是日期位于第一行时的公式,但是我的日期位于从 B7:AE7 开始的列中。非常感谢您的帮助。

google-sheets google-apps-script google-sheets-formula formula
1个回答
0
投票

您有一行日期,并且希望在打开电子表格时将光标移动到当前日期。

考虑这个答案:

  • onOpen()
    • 一个简单的触发器,将在打开电子表格时运行该函数
  • var dates = dateRange.getDisplayValues().flat()
    • 获取显示的日期;这些将是字符串
    • flat
      为简单起见,会将 2D 数组转换为 1D 数组
  • var formattedToday = Utilities.formatDate(today, "GMT+10", 'dd/MM/yyyy').toString()
    • 格式化今天的日期并将其转换为字符串。
  • var result =dates.indexOf(formattedToday);
    • 使用 indexOf 查找今天的日期与电子表格范围内的日期之间的匹配项。
  • if (result == -1){
    • 如果
      indexOf
      返回值 -1,则未找到匹配项; OP 应该包含一些可以应对这种意外情况的代码。
  • var targetRange = sheet.getRange(startRow,startColumn+result)
    • 描述要激活的单元格。
    • 注意
      result
      的值如何成为单元格范围的一部分。
  • targetRange.activateAsCurrentCell()
    • 找到匹配项后,将定义目标范围,并将其设置为当前单元格。

function onOpen() {
 gotoTodaysDate()
}

function gotoTodaysDate() {
  var ss = SpreadsheetApp.getActiveSpreadsheet()
  var sheet = ss.getSheetByName("Sheet2")
  var startRow = 7
  var startColumn = 2
  var endColumn = 31
  var dateRange = sheet.getRange(startRow,startColumn,1,endColumn-startColumn+1)
  //Logger.log("DEBUG: the data range = "+dateRange.getA1Notation())
  // get the dates as string and flatten to a 1D array
  var dates = dateRange.getDisplayValues().flat()
  //Logger.log(dates) // DEBUG

  // get Todays date and format it as a string
  var today = new Date()
  //Logger.log(today) // DEBUG
  var formattedToday = Utilities.formatDate(today, "GMT+10", 'dd/MM/yyyy').toString()
  //Logger.log(formattedToday) // DEBUG
  
  // use indexOf to find a match for today's date in the dates
  var result =dates.indexOf(formattedToday);
  //Logger.log(result) // DEBUG

  // if result = -1, then can't find date.
  if (result == -1){
    // date can't be found
    // OP to write any relevant code
    return
  }
  // otherwise, result = index value of the matched date
  // get the target cell and make it active
  var targetRange = sheet.getRange(startRow,startColumn+result)
  targetRange.activateAsCurrentCell()

}

示例 - 之前

before

示例 - 之后

after

© www.soinside.com 2019 - 2024. All rights reserved.