问题描述
我正在处理一个项目,在该项目中我需要从API收集数据,将其存储在矩阵中,并使用google-Sheets-APIV4和Node.js在Google工作表中设置该数据。API中两个关键字是对象开始日期和对象结束日期,它们以例如2021-09-22和ie的格式返回日期字符串。YYYY-MM-DD。我要将该日期转换为dd/mm/yyyy格式。我为此实现的函数是:
function changeDateFormat(dateString){
let a=dateString.split('-');
let t=a[0];
a[0]=a[2];
a[2]=t;
//console.log(a.join('/'));
return `${a.join('/')}`;
}
代码运行良好,我使用它的方式如下所示:
let checkin=`${changeDateFormat(`${tenancy.start_date}`)}`;
console.log(checkin);
let checkout=`${changeDateFormat(`${tenancy.end_date}`)}`;
console.log(checkout);
上述代码中的租户是一个对象。我在控制台中得到的输出是 哪种是所需的格式,这表明更改日期的算法也运行良好。
另外,我在工作表中添加数据的代码是
await googleSheets.spreadsheets.values.append({
auth,
spreadsheetId,
range:"MySheet!A2:AC",
valueInputOption:"USER_ENTERED",
resource: {values : newData}
/*newData is a 2-D array where each row has several data fields in the form newData[i]=[propertyName,id,......,check-in,checkout,.......]*/
});
但是,当我在工作表中添加数据时,日期字段完全混乱,其中一些具有所需的dd/mm/yyyy格式,而另一些具有相同的yyyy-mm-dd格式,如图
我无法解决这个问题,因为我也找不到代码中的任何错误,但输出完全混乱,因为它在某些单元格中工作,但在其他单元格中不工作。解决此问题的可能解决方法是什么?如果需要,我很乐意提供有关问题或我的代码的任何其他信息或数据。谢谢!
推荐答案
我相信您的目标和您的情况如下。
您要将单元格的数字格式设置为dd/mm/yyyy
。
您希望使用Node.js的googleapis来实现此目的。
您已经能够使用Sheets API获取和放置Google电子表格的值。
修改点:
例如,当[["2021-01-02", "02/01/2021"]]
的值在USER_ENTERED
valueInputOption
的表API中使用";spadsheets.values.append";的方法放入电子表格时,每个值都被放入Date对象。但数字格式似乎不同。
为了使用相同的数字格式,在此答案中,我想使用";spadsheets.BatchUpdate";的方法将dd/mm/yyyy
的数字格式设置为单元格。
当上述要点反映到您的脚本中时,它将如下所示。
修改后的脚本:
请设置sheetId
的值。
await googleSheets.spreadsheets.values.append({
auth,
spreadsheetId,
range: "MySheet!A2:AC",
valueInputOption: "USER_ENTERED",
resource: { values: newData },
});
const sheetId = "###"; // <--- Please set the sheet ID of "MySheet".
const resource = {
auth,
spreadsheetId,
resource: {
requests: [
{
repeatCell: {
range: {
sheetId: sheetId,
startRowIndex: 1,
startColumnIndex: 12,
endColumnIndex: 15,
},
cell: {
userEnteredFormat: {
numberFormat: {
pattern: "dd/mm/yyyy",
type: "DATE",
},
horizontalAlignment: "RIGHT", // <--- Added
},
},
fields: "userEnteredFormat",
},
},
],
},
};
await googleSheets.spreadsheets.batchUpdate(resource);
运行上述修改后的脚本时,将列&Q;M&Q;的编号格式更改为dd/mm/yyyy
。这是您的示例图像中的内容。
如果要修改格式和范围,请修改上面的脚本。
,在上面的脚本中,BatchUpdate方法反映了列&Quot;M";到";O";的所有行。所以我认为在这种情况下,这个BatchUpdate方法可能只运行一次就可以达到您的目标。