我是 Google Apps 脚本的新手,我在日期格式转换方面遇到困难
我的源列的数据格式为“mm/dd/yyyy”。我想将其更改为“MMM-YY”,即我只需要提取月份和年份。 以下是我不成功的尝试
// Get all values in column A on sheet titled "Transactions"
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sourcesheet = ss.getSheetByName("Transactions");
var targetsheet = ss.getSheetByName("stage");
// get source range
var source = sourcesheet.getRange("A:J");
//get the data and place in array
var alldata = sourcesheet.getRange("A:I").getValues();
Logger.log(alldata.length) ;
//********************************************************************************//
// loop through date column and change format
for(var i=1; i<alldata.length; i++)
{
alldata[i][0]= new Date(alldata[i][0]);
var Mnth = alldata[i][0].getMonth() ;
var Year = alldata[i][0].getYear() ;
var Day = alldata[i][0].getDay() ;
var Day2 = new Date(Year,Mnth,Day);
alldata[i][10] = Utilities.formatDate(Day2, Session.getScriptTimeZone(), "MMM-YY");
}
//********************************************************************************//
// get destination range
var destination = targetsheet.getRange(2, 1, alldata.length, 11);
// clear contents of destination sheet
destination.clear();
// copy values to destination range
destination.setValues(alldata);
}
示例
源列值 =“01/06/2019”值写入输出列“1/19/2019”,但显示为“Jan-19”
最佳答案
替换
alldata[i][10] = Utilities.formatDate(Day2, Session.getScriptTimeZone(), "MMM-YY");
由
alldata[i][10] = "'" + Utilities.formatDate(Day2, ss.getSpreadsheetTimeZone(), "MMM-yy");
说明
- 添加撇号以防止 Google 表格将
MMM-YY
格式的值解释为MMM-dd
- 将
YY
替换为yy
- 将
Session.getScriptTimeZone()
替换为ss.getSpreadsheetTimeZone()
注释
YY
表示弱年份,可能会导致一年中某些日期出现一些错误。为了防止这种情况,请改用yy
。- Google 表格和 Google Apps 脚本中用于日期格式的某些字母可能具有不同的含义。请参阅引用资料以正确使用它们。
- 脚本时区和电子表格时区可能不同。由于您要将值传递到电子表格,因此最好使用其时区而不是脚本中的时区。
将日期显示为 MMM-yy
作为日期值而不是文本(字符串)值的解决方案不需要使用 Google Apps 脚本,而是使用 Google 表格数字格式功能(单击“格式”>“数字”>“更多格式”>“更多日期和时间格式”),您可以使用 Google Apps 脚本通过 setNumberFormat(numberFormat)
设置数字格式。
引用文献
日期和数字格式
在 Google 表格中
在Utilities.formatDate(日期,时区,格式)中
关于javascript - 从日期中提取月份和年份并显示为 MMM-YY,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59276913/