从电子表格中提取日期时 getValue 格式已关闭

ben*_*ver 2 google-apps-script

我正在使用脚本将电子表格转换为 PDF。

为了定义 PDF 的标题,我从几个特定单元格中提取数据,其中一个单元格包含日期。问题是,标题中的日期以长格式显示。这是我的一段代码:

  var ss = SpreadsheetApp.openById("XXXXXXXXXXXXXXXXXXXXXXXXXXXXX"); //       Opens spreadsheet to pull name from, by ID.
  var sheet = ss.getSheetByName('PurchaseOrderForm'); // Sets the sheet
  var ponumber = sheet.getRange("G3:G3"); // Define ranges/cells here + below.
  var date = sheet.getRange("G2:G2") // Custom cell to pull from
  var companyname = sheet.getRange("A11:A11") // These are then added together in line 30

  var name = ponumber.getValue()+" | "+date.getValue()+" | "+companyname.getValue()+".pdf"; // Output of the final PDF name. A composition of the above vars, plus some custom text.
Run Code Online (Sandbox Code Playgroud)

这将创建几乎与我想要的一样的 PDF 名称,除了日期部分。这是我得到的 PDF 标题的示例:

14PO051 | Tue Jan 28 2014 00:00:00 GMT-0000 (GMT) | Micronclean.pdf
Run Code Online (Sandbox Code Playgroud)

日期出来了,但不是我想要/需要的格式。在电子表格中,日期单元格 G2 的格式为 DD/MM/YY。我需要在我的标题中出现这样的内容,否则它太长了,没有任何用处。

如果有人知道如何将其简化为 DD/MM/YY 或同等日期,我将不胜感激!

一种解决方法是不设置日期格式,而只是将它们手动输入到电子表格中。我希望事情不会发展到这个地步,我的同事们喜欢不必把整个事情都打出来。

Bry*_*n P 5

var date = Utilities.formatDate(sheet.getRange("G2:G2").getValue(), ss.getSpreadsheetTimeZone(), "dd/MM/YY");  
Run Code Online (Sandbox Code Playgroud)

  • 只是一个修复:如此处所述(https://developers.google.com/apps-script/reference/utilities/utilities#formatDate%28Date,String,String%29)“formatDate()”使用“SimpleDateFormat”格式,您可以在这里看到它们:https://docs.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html。请注意:**DD 是一年中的天数**,因此您应该修改代码以使用小写日期格式:`dd` (2认同)

小智 5

要从工作表中获取显示的值(使用工作表格式),请使用 getDisplayValue 或 getDisplayValues

https://developers.google.com/apps-script/reference/spreadsheet/range#getdisplayvalues

(如果可能的话,只要您获得超过 1 个单元格,就可以使用复数函数;批量操作速度更快!)