NodeJS Google Sheets API将值作为字符串返回

xe55xuns  于 2023-03-17  发布在  Node.js
关注(0)|答案(1)|浏览(138)

我可以使用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);
  }
};

谁能指出我哪里做错了吗?谢谢

zqdjd7g9

zqdjd7g91#

在您的脚本中,请将valueRenderOption包含在options中。当您的脚本被修改时,它将变为如下所示。

发件人:

const options = {
  spreadsheetId: docId,
  range: `${sheetId}!${_range}`
};

收件人:

const options = {
  spreadsheetId: docId,
  range: `${sheetId}!${_range}`,
  valueRenderOption: "UNFORMATTED_VALUE",
};
  • 现阶段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”。

相关问题