表格(Excel)
表格参数说明
range
格式为 {工作表}!{单元格范围}
,规范如下:
- 单元格范围的格式为
A1:C10
orA1
,单元格起始位置不能超过表格最大的行列 - 如果工作表名称中含有
!:'
这 3 种特殊字符,必须以单引号包裹工作表名称。示例:工作表 1
工作表 1!A1
工作表 1!A1:C1
'工作!:表'!A2:C3
resource
类型为 object
,里面必须包含 key 值 "values"
。values
为一个二维数组,表示追加/更新的表格内容,第一维表示行,第二维表示列。空字符串表示当前单元格为空。
示例:
{
"resource": {
"values": [[1, "", "a"]]
}
}
{
"resource": {
"values": [
[1, "", "a"],
["b", "c", 2]
]
}
}
日期类型 OADate 数值转换 {#oadate-conversion-example}
日期类型返回值为 OADate 类型数值,如单元格中日期为 2022/7/27
,返回的值为 44769
。
参考以下 JavaScript 代码进行转换:
function _getTimezoneOffset(date) {
let offset = date.getTimezoneOffset();
if (offset === -485) {
offset = -485 - 43 / 60;
}
return offset;
}
function _fromOADate(oadate) {
const offsetDay = oadate - 25569;
const date = new Date(offsetDay * 86400000);
const adjustValue = offsetDay >= 0 ? 1 : -1;
const oldDateTimezoneOffset = _getTimezoneOffset(date);
const ms =
(oadate * 86400000 * 1440 +
adjustValue -
25569 * 86400000 * 1440 +
oldDateTimezoneOffset * 86400000) /
1440;
let firstResult = new Date(ms);
const fixHourSign = oldDateTimezoneOffset >= 0 ? 1 : -1;
const nextHour = new Date(ms + fixHourSign * 3600000);
const nextHourTimezoneOffset = _getTimezoneOffset(nextHour);
if (oldDateTimezoneOffset !== nextHourTimezoneOffset) {
let newResult = new Date(
ms + (nextHourTimezoneOffset - oldDateTimezoneOffset) * 60 * 1000
);
if (oldDateTimezoneOffset > nextHourTimezoneOffset) {
if (
fixHourSign === -1 ||
nextHourTimezoneOffset === _getTimezoneOffset(firstResult)
) {
newResult =
newResult.getMilliseconds() === 999
? new Date(newResult.valueOf() + 1)
: newResult;
return newResult;
}
} else if (oldDateTimezoneOffset < nextHourTimezoneOffset) {
if (
fixHourSign === 1 ||
nextHourTimezoneOffset === _getTimezoneOffset(firstResult)
) {
newResult =
newResult.getMilliseconds() === 999
? new Date(newResult.valueOf() + 1)
: newResult;
return newResult;
}
}
}
firstResult =
firstResult.getMilliseconds() === 999
? new Date(firstResult.valueOf() + 1)
: firstResult;
return firstResult;
}
function convertOADate(OAdate) {
return _fromOADate(OAdate).toLocaleDateString();
}
convertOADate(44769);
// '2022/7/27'
最后修改时间: 9 个月前