
本文旨在解决从 Google Sheets 中提取的日期数据在 Webapp 中显示格式不正确的问题。通过 Utilities.formatDate 函数或 getDisplayValue 方法,可以轻松地将日期格式化为所需的 "dd MMMM yyyy" 格式。此外,还介绍了使用 getValues 方法批量获取数据以提高脚本效率的最佳实践。
在使用 Google Apps Script 构建 Webapp 时,从 Google Sheets 获取的日期数据可能不会以你期望的格式显示。例如,你可能希望日期显示为 "dd MMMM yyyy",但默认情况下,它可能显示为其他格式。以下介绍两种常用的方法来解决这个问题:
Utilities.formatDate 函数可以将日期对象格式化为字符串,允许你指定所需的日期格式。
示例代码:
function submitDT(obj){
var ss = SpreadsheetApp.openById("google sheet url");
var sheet = ss.getSheetByName("mysheet");
var flag = 1 ;
var lr = sheet.getLastRow();
for(var i = 1;i <= lr;i++){
var vid = sheet.getRange(i, 2).getValue();
if(vid ==obj){
flag = 0;
var b1 = sheet.getRange(i, 1).getValue();
// 格式化日期
var b3 = sheet.getRange(i, 3).getValue();
if (b3 instanceof Date) {
b3 = Utilities.formatDate(b3, Session.getScriptTimeZone(), "dd MMMM yyyy");
}
var b4 = sheet.getRange(i, 4).getValue();
var b5 = sheet.getRange(i, 5).getValue();
var b6 = sheet.getRange(i, 6).getValue();
var b7 = sheet.getRange(i, 7).getValue();
// 格式化日期
var b8 = sheet.getRange(i, 8).getValue();
if (b8 instanceof Date) {
b8 = Utilities.formatDate(b8, Session.getScriptTimeZone(), "dd MMMM yyyy");
}
var data ="<center><table><tr><th colspan=2>Transaction Information.</th></tr><tr><td>Tracking No.:</td><td>"
+obj+"</td></tr><tr><td>Transaction Title</td><td>"+b1+"</td></tr><tr><td>Date Accepted by Focal:</td><td>"+b3+"</td></tr><tr><td>Name of Establishment:</td><td>"+b4+"</td></tr><tr><td>Address:</td><td>"+b5+"</td></tr><tr><td>Status:</td><td>"+b6+"</td></tr><tr><td>Claimed by:</td><td>"+b7+"</td></tr><tr><td>Date Claimed:</td><td>"+b8+"</td></tr></table></center>";
return data;
}
}
if(flag==1){
var data ="Transaction not found. For other concerns, please contact us at **********";
return data;
}
};
}代码解释:
注意事项:
getDisplayValue 方法返回单元格中显示的字符串值,而不是实际的日期对象。如果 Google Sheets 中显示的日期格式与你想要的格式相同,则可以使用此方法。
示例代码:
function submitDT(obj){
var ss = SpreadsheetApp.openById("google sheet url");
var sheet = ss.getSheetByName("mysheet");
var flag = 1 ;
var lr = sheet.getLastRow();
for(var i = 1;i <= lr;i++){
var vid = sheet.getRange(i, 2).getValue();
if(vid ==obj){
flag = 0;
var b1 = sheet.getRange(i, 1).getValue();
// 获取显示值
var b3 = sheet.getRange(i, 3).getDisplayValue();
var b4 = sheet.getRange(i, 4).getValue();
var b5 = sheet.getRange(i, 5).getValue();
var b6 = sheet.getRange(i, 6).getValue();
var b7 = sheet.getRange(i, 7).getValue();
// 获取显示值
var b8 = sheet.getRange(i, 8).getDisplayValue();
var data ="<center><table><tr><th colspan=2>Transaction Information.</th></tr><tr><td>Tracking No.:</td><td>"
+obj+"</td></tr><tr><td>Transaction Title</td><td>"+b1+"</td></tr><tr><td>Date Accepted by Focal:</td><td>"+b3+"</td></tr><tr><td>Name of Establishment:</td><td>"+b4+"</td></tr><tr><td>Address:</td><td>"+b5+"</td></tr><tr><td>Status:</td><td>"+b6+"</td></tr><tr><td>Claimed by:</td><td>"+b7+"</td></tr><tr><td>Date Claimed:</td><td>"+b8+"</td></tr></table></center>";
return data;
}
}
if(flag==1){
var data ="Transaction not found. For other concerns, please contact us at **********";
return data;
}
};
}代码解释:
注意事项:
为了提高脚本的效率,建议使用 getValues 方法批量获取数据,而不是一次获取一个单元格的值。
示例代码:
function submitDT(obj){
var ss = SpreadsheetApp.openById("google sheet url");
var sheet = ss.getSheetByName("mysheet");
var lr = sheet.getLastRow();
// 获取所有数据
var dataRange = sheet.getRange(1, 1, lr, 8);
var data = dataRange.getValues();
for(var i = 0; i < lr; i++){
var vid = data[i][1]; // Column B (index 1)
if(vid == obj){
var b1 = data[i][0]; // Column A (index 0)
var b3 = data[i][2]; // Column C (index 2)
if (b3 instanceof Date) {
b3 = Utilities.formatDate(b3, Session.getScriptTimeZone(), "dd MMMM yyyy");
}
var b4 = data[i][3]; // Column D (index 3)
var b5 = data[i][4]; // Column E (index 4)
var b6 = data[i][5]; // Column F (index 5)
var b7 = data[i][6]; // Column G (index 6)
var b8 = data[i][7]; // Column H (index 7)
if (b8 instanceof Date) {
b8 = Utilities.formatDate(b8, Session.getScriptTimeZone(), "dd MMMM yyyy");
}
var dataOutput = "<center><table><tr><th colspan=2>Transaction Information.</th></tr><tr><td>Tracking No.:</td><td>"
+ obj + "</td></tr><tr><td>Transaction Title</td><td>" + b1 + "</td></tr><tr><td>Date Accepted by Focal:</td><td>" + b3 + "</td></tr><tr><td>Name of Establishment:</td><td>" + b4 + "</td></tr><tr><td>Address:</td><td>" + b5 + "</td></tr><tr><td>Status:</td><td>" + b6 + "</td></tr><tr><td>Claimed by:</td><td>" + b7 + "</td></tr><tr><td>Date Claimed:</td><td>" + b8 + "</td></tr></table></center>";
return dataOutput;
}
}
var dataOutput = "Transaction not found. For other concerns, please contact us at **********";
return dataOutput;
}代码解释:
总结:
通过使用 Utilities.formatDate 函数或 getDisplayValue 方法,你可以轻松地将 Google Sheets 中的日期格式化为 Webapp 中所需的格式。此外,使用 getValues 方法批量获取数据可以提高脚本的效率。选择哪种方法取决于你的具体需求和 Google Sheets 中显示的日期格式。建议优先使用 Utilities.formatDate 函数,因为它提供了更大的灵活性和控制力。
以上就是将 Google Sheets 中的日期格式化到 Webapp的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号