我正在尝试从单元格A1中的28-Jun-19
,单元格A2中的17/01/2019
中读取日期,并通过脚本将其写入另一张工作表。我需要的格式是“ mm / dd / yy”,但我的输出是6/28/2019, 12:00:00 AM
。
A1 A2
------ --------
28-Jun-19 17/01/2019
我没有在以下代码中包含循环:-
var A_Date = targetSheet1.getRange(lastRow -i, 2).getValues().toLocaleString();
sourceSheetalpha.getRange(lastRow2 + 1, 13).setValue(A_Date);
我期望输出28/06/2019
我期望输出17/01/2019
答案 0 :(得分:2)
17/01/2019
。
my output is "6/28/2019, 12:00:00 AM".
开始,我认为17/01/2019
是日期对象。如果我的理解正确,那么这个答案如何?请认为这只是几个答案之一。
在以下示例脚本中,假设17/01/2019
放在单元格“ A1”中。并将检索到的值放入单元格“ B1”和“ C1”。
在此模式下,使用Utilities.formatDate()
。
var sheet = SpreadsheetApp.getActiveSheet();
var value = sheet.getRange("A1").getValue();
sheet.getRange("B1").setValue(Utilities.formatDate(value, Session.getScriptTimeZone(), "dd/MM/yyyy"));
在此模式下,使用setNumberFormat()
。
var sheet = SpreadsheetApp.getActiveSheet();
var value = sheet.getRange("A1").getValue();
sheet.getRange("C1").setNumberFormat("dd/mm/yyyy").setValue(value);
从共享的电子表格中,发现19-Jul-19
和7/19/2019
的值是日期对象。
共享电子表格中包含的脚本如下。
function Test() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sourceSheetOne = ss.getSheetByName("Sheet1");
var lastRow = sourceSheetOne.getLastRow();
for (var i = 0 ; i < 12; i++)
{
var A_Date = sourceSheetOne.getRange(lastRow -i, 1).getValues().toString();
sourceSheetOne.getRange(lastRow - i, 4).setNumberFormat("dd/mm/yyyy").setValue(A_Date);
}
}
不幸的是,在这种情况下,我的回答没有得到体现。这是由于我的英语水平差。我为此表示歉意。因此,请进行如下修改。
修改脚本后,请进行以下修改。
从:var A_Date = sourceSheetOne.getRange(lastRow -i, 1).getValues().toString();
至:
var A_Date = sourceSheetOne.getRange(lastRow -i, 1).getValue();
与其他模式一样,以下脚本如何?我认为该脚本的处理成本比上面的要低。
脚本:function Test() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sourceSheetOne = ss.getSheetByName("Sheet1");
var lastRow = sourceSheetOne.getLastRow();
var values = sourceSheetOne.getRange(2, 1, lastRow - 1, 1).getValues();
sourceSheetOne.getRange(2, 4, values.length, values[0].length).setNumberFormat("dd/mm/yyyy").setValues(values);
}