如何在Apps脚本中将日期转换为字符串?

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

我有一张 Google 表格,每年都有不同的 SheetName,采用 YYYY 格式。(例如 2023、2024) 根据日期输入,我想获取 YYYY 并转到特定的工作表。

我已将日期转换为 YYYY:

var checkInYear = Utilities.formatDate(new Date(guestCInDate),'GMT','yyyy');

但是当我尝试时

var hterCalendar = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(checkInYear).getActiveRange().getValue();

它不会转到当年的特定工作表,而是转到文件中的第一张工作表。

我怀疑这是因为我的 checkInYear 是一个日期变量,而我的 Sheet name 是一个字符串,所以它找不到匹配项。

如何将我的 checkInYear 转换为字符串?

我已经尝试过:

var checkInYear = guestCInDate.Substring(1,4);

但出现错误:

TypeError: guestCInDate.Substring is not a function
google-sheets google-apps-script type-conversion
1个回答
0
投票

在 Apps 脚本上将日期转换为字符串并使用三元运算符导航到特定工作表。

按照@TheMaster的建议去做

console.log(typeof guestCInDate);

它应该提供类似这样的内容:

Output 1

根据所提供的内容,假设

guestCInDate
是一个 字符串,即左侧的字符串。除非输入使其成为对象或其他数据类型,否则您将得到类似于右侧的内容。


下面的脚本使用条件(三元)运算符,根据脚本上的

specific
年份导航到
written
工作表,并根据@Saddles 建议,我选择使用
setActiveSheet(sheet)

const myFunction = () => {
  var guestCInDate = new Date("August 15, 2020");
  console.log(typeof guestCInDate);
  var checkInYear = Utilities.formatDate(new Date(guestCInDate), 'GMT', 'yyyy');
  console.log(checkInYear);
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var hterCalendar = ss.getSheetByName(checkInYear);
  hterCalendar ? ss.setActiveSheet(hterCalendar) : null;
}

输出:

Sample Output


参考资料:

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