基本上我希望将YYYY-MM-DD格式插入新电子表格的单元格中,当它以纯文本形式创建时。问题是,当插入的值插入到新工作表中时,它显示为DD / MM / YYYY,这是在后台运行的其他程序无法读取的。
以下是代码:
function dateTest()
{
var template = SpreadsheetApp.openById('ABC------1234')
var test = template.getSheetByName('TEST');
var database = SpreadsheetApp.getActive().getSheetByName('DASHBOARD');
//start & endDates are in YYYY-MM-DD format in these cells
var startDate = database.getRange('A10').getValue();
var endDate = database.getRange('A11').getValue();
//The results come up as DD/MM/YYYY when they are set into TEST
//Formatted to YYYY-MM-DD has already been done
test.getRange('D1').setValue(startDate);
test.getRange('D2').setValue(endDate);
}
如有必要,可将日期拆分为YYYY +' - ' +' MM' +' - ' +' DD'然后作为纯文本插入,但我对如何执行此专长毫无头绪。任何建议都将非常感谢。
答案 0 :(得分:4)
可以清理它,但这是基础知识。
//start & endDates are in YYYY-MM-DD format in these cells
var startDate = database.getRange('A10').getValue();
var strStartDate = startDate.getFullYear() + "-" + (startDate.getMonth() + 1) + "-" + startDate.getDate();
var endDate = database.getRange('A11').getValue();
var strEndDate = endDate.getFullYear() + "-" + (endDate.getMonth() + 1) + "-" + endDate.getDate();
//The results come up as DD/MM/YYYY when they are set into TEST
//Formatted to YYYY-MM-DD has already been done
test.getRange('D1').setNumberFormat('@STRING@');
test.getRange('D1').setValue(strStartDate);
test.getRange('D2').setNumberFormat('@STRING@');
test.getRange('D2').setValue(strEndDate);
答案 1 :(得分:3)
在Google Spreadsheets中,一个主要的撇号意味着忽略格式化。因此,这有效:
range.setValue("'2007-09-12");
或者,文本可以是引号并设置为“公式”:
range.setFormula('"2007-09-12"');
(确保字符串包含双引号而不是单引号 - Apps脚本是JavaScript,因此支持,但电子表格公式不能以相同的方式理解单引号。)
答案 2 :(得分:0)
尝试此解决方法:在工作表中手动将单元格格式设置为“纯文本”,但不参与操作。我们称这个单元为J1。在致电之前:
test.getRange('D1').setValue(startDate);
test.getRange('D2').setValue(endDate);
做类似的事情:
test.getRange('J1').copyFormatToRange(test,3,3,0,1); // This is D1 and D2
test.getRange('D1').setValue(startDate);
test.getRange('D2').setValue(endDate);
这可以让您在目标单元格上使用明文格式。
答案 3 :(得分:0)
这将重新格式化日期并将其设置为字符串:
var tz = ss.getSpreadsheetTimeZone();
var newDate = Utilities.formatDate(startDate, tz, 'yyyy-MM-dd'); // Requested format
s.getRange('D1').setValue("'" + newDate); // Set as string