我正在尝试将存储在googlesheets/appscript中的“dd.mm.yy”格式的数据转换为“w”格式。很遗憾,我无法使用“.formatdate()”函数,因为工作表无法将输入值识别为日期值,因此我尝试了以下操作:
function CheckWeekNuber() {
var dateStr =SpreadsheetApp.getActiveSpreadsheet().getSheetByName("INSERT RAW DATA HERE").getRange(3,5,300,4).getValues();
var day = dateStr.substring(0,2);
var month = dateStr.substring(3,5);
var year = "20"+dateStr.substring(6,8);
var weekNumb = Utilities.formatDate(new Date(year, month-1, day), "GMT", "w");
SpreadsheetApp.getActiveSpreadsheet().getSheetByName("WEEKNUMBERS").getRange(3,5,300,4).setValues(weekNumb);
}
它与foor循环完美结合,一次转换每个值。但速度太慢了。我的问题在于对数组使用“.substring()”公式,它似乎不起作用。。你知道怎么修吗?
1条答案
按热度按时间1qczuiv01#
直接应用于数组时,无法使用substring()。循环是获取数组中每个元素的substring()的唯一方法。
建议
如果您愿意更改工作表中的数据,可以尝试在数据区域中使用createtextfinder(“.”).replaceallwithtext(“/”)将数据转换为日期格式。一旦你有了这个,你仍然会循环到你的新数据中去得到每个日期的周数。代码如下,我这边正在工作: