![](/img/trans.png)
[英]How to remove a blank row in google sheet using google sheets api v4 javascript?
[英]How to insert the current date time into a google sheet, respecting the sheet's timezone, using sheets api v4?
我一直在尝试将当前日期时间插入几个小时的sheets api v4中的Google工作表中。 我不敢相信这很难解决!
到目前为止,我发现:
Js date object
无法使用,因为Google表格使用了不同的纪元(显然,这取决于mac vs win)。 我一直找不到能创建此Google表格/ Excel日期序列号的任何库。 如果可以的话,那可能行得通。
如果我将Js日期对象格式化为字符串并将其发送到工作表,由于服务器位置(运行工作表api的地方)与用户位置(使用工作表的地方)的关系,时区不正确。
我考虑过将Js Date对象转换为用户的时区,但Google工作表不会使用CLDR吐出GMT
或UTC
值。 到目前为止,我还没有发现要使用该信息来转换时区。
电子表格的时区,采用CLDR格式,例如America / New_York。 如果无法识别时区,则可能是自定义时区,例如GMT-07:00。
如果我使用=NOW()
作为值发送单元格updateRequest
,则日期时间正确。 但是,每次编辑电子表格时,它都会更新...无法用作行提交的时间戳。 希望您可以将其关闭!
因此,总而言之,我想让Google表格创建日期,因为它知道用户的时区。 当然,有一种方法可以只使用表格API输入尊重用户时区的日期? 如果没有,我有什么选择?
经过更多搜索后,我发现moment-timezone
可以使用CLDR
时区格式提供正确的日期字符串。
因此,我采用了这种方法,将date time object
转换为工作表用户的时区,然后将数据发送到工作表。
这是我的操作方法(我已经提取了所有的auth
, jwt
和spreadsheetId
jwt
部分):
const moment = require('moment-timezone');
const {google} = require('googleapis');
const sheets = google.sheets('v4');
const getSpreadsheetProperties = (jwt, sheets,spreadsheetId) => {
try{
var request = {
spreadsheetId: spreadsheetId,
ranges: [],
includeGridData: false,
auth: jwt,
};
return new Promise ((resolve, reject) => {
sheets.spreadsheets.get(request, (err, response) => {
if (err) {
console.error('getSpreadsheetProperties - error', err);
reject(false)
}
console.log('getSpreadsheetProperties - response', response)
resolve(response)
});
})
} catch(error) {
console.error('getSpreadsheetProperties - error', error)
return error
}
}
const getSheetProperties = (spreadsheetProperties) => {
return spreadsheetProperties.data.sheets
}
const getTimeZone = (spreadsheetProperties) => {
return spreadsheetProperties.data.properties.timeZone
}
const getDate = (timeZone) => {
const date = moment.tz(timeZone).format('DD-MM-YY, h:mm A')
return date
}
const ssProps = await getSpreadsheetProperties(jwt, sheets,spreadsheetId)
const timeZone = getTimeZone(ssProps)
const date = getDate(timeZone)
希望这将帮助其他人不要浪费自己的时间。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.