无法在 Apps 脚本中找到适用于 Google 表格并打开到今天当前日期的函数。
我找到的所有公式都是日期位于第一行时的公式,但是我的日期位于从 B7:AE7 开始的列中。非常感谢您的帮助。
您有一行日期,并且希望在打开电子表格时将光标移动到当前日期。
考虑这个答案:
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);
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()
}
示例 - 之前
示例 - 之后