我可以使用NodeJS API读取给定Google工作表的范围,但所有值(甚至是数字单元格)都显示为字符串。
const { google } = require('googleapis');
exports.readGoogleSheet = async (req, res) => {
try {
const auth = new google.auth.GoogleAuth({
keyFile: '...',
scopes: 'https://www.googleapis.com/auth/spreadsheets.readonly'
});
const client = await auth.getClient()
const sheets = google.sheets({
version: 'v4',
auth: client
});
// read body params
const docId = req.body.docId; //1uq .....
const sheetId = req.body.sheetId; //Sheet1
const range = req.body.range; //A1:C2
// check if blank
if (!docId || !sheetId || !range) res.status(400).send('Invalid Parameters')
const options = {
spreadsheetId: docId,
range: `${sheetId}!${_range}`
};
const {data} = await sheets.spreadsheets.values.get(options);
console.log(data.values);
// this shows something like
//[ [ 'name', 'value', 'units' ], [ 'Sales', '350000', '$' ] ]
// notice how the 350000 appears as a string
// even when it is a plain unformatted number in the google sheet
res.status(200).send(values);
}
catch (err) {
res.status(400).send(err.message);
}
};
谁能指出我哪里做错了吗?谢谢
1条答案
按热度按时间zqdjd7g91#
在您的脚本中,请将
valueRenderOption
包含在options
中。当您的脚本被修改时,它将变为如下所示。发件人:
收件人:
valueRenderOption
的默认值为FORMATTED_VALUE
,我想这就是您现在出现问题的原因。参考文献:
FORMATTED_VALUE
:将根据单元格的格式设置计算回复中的值并设置其格式。格式设置基于电子表格的区域设置,而不是请求用户的区域设置。例如,如果A1为1.23,A2 =A1并设置为货币格式,则A2将返回“$1.23”。UNFORMATTED_VALUE
:将计算值,但不会在回复中格式化。例如,如果A1为1.23,A2 =A1并格式化为货币,则A2将返回数字1.23。FORMULA
:将不计算值。答复将包含公式。例如,如果A1为1.23,A2为=A1,并且格式为货币,则A2将返回“=A1”。