Google sheets 使用Javascript在Google电子表格中插入日期(yyyy-MM-dd-HH:MM:ss)会添加一个撇号

Google sheets 使用Javascript在Google电子表格中插入日期(yyyy-MM-dd-HH:MM:ss)会添加一个撇号,google-sheets,google-sheets-api,Google Sheets,Google Sheets Api,我使用Node.js中的“googleapis”库将新行附加到Google电子表格中。这是我希望附加的数据示例: [ 9999, 1, 0, 0, 1, 0, '2019-09-19 14:16:10' ] 在添加数据后,我看到谷歌电子表格设法在日期值的开头添加了撇号。这种情况经常发生,这是一个问题,因为单元格值现在被视为字符串而不是日期,我需要一个日期,以便稍后的查询按日期时间排序。这是单元格值结果: 2019-09-1914:16:10 这是我使用的脚本: const { google }

我使用Node.js中的“googleapis”库将新行附加到Google电子表格中。这是我希望附加的数据示例:

[ 9999, 1, 0, 0, 1, 0, '2019-09-19 14:16:10' ]
在添加数据后,我看到谷歌电子表格设法在日期值的开头添加了撇号。这种情况经常发生,这是一个问题,因为单元格值现在被视为字符串而不是日期,我需要一个日期,以便稍后的查询按日期时间排序。这是单元格值结果:

2019-09-1914:16:10

这是我使用的脚本:

const { google } = require('googleapis');
const keys = require('../keys.json');

class GoogleSpreadsheet {

  constructor() {
    this.client = new google.auth.JWT(
      keys.client_email, 
      null, 
      keys.private_key, 
      ['https://www.googleapis.com/auth/spreadsheets']
    );
  }

  insertRow(data, sheet, method) {
    try {
      this.client.authorize(async (error) => {
        if (error) throw error;

        const gsapi = google.sheets({ version: 'v4', auth: this.client });

        if (method === 'append') {
          const opts = this.buildAppendOptions(sheet, data);
          await gsapi.spreadsheets.values.append(opts);
        }

        if (method === 'update') {
          const opts = this.buildUpdateOptions(sheet, data);
          await gsapi.spreadsheets.values.update(opts);
        }

      });
    } catch (error) {
      console.error('Could not insert raws into google spreadsheet')
    }
  }

  buildAppendOptions(sheet, data) {
    return {
      spreadsheetId: process.env.GOOGLE_SPREADSHEET_ID,
      range: sheet,
      valueInputOption: 'RAW',
      insertDataOption: 'INSERT_ROWS',
      resource: {
        values: data
      }
    }
  }

  buildUpdateOptions(sheet, data) {
    return {
      spreadsheetId: process.env.GOOGLE_SPREADSHEET_ID,
      range: sheet,
      valueInputOption: 'RAW',
      resource: {
        values: data
      }
    }
  }

}

module.exports = GoogleSpreadsheet;
我这样称呼代码:

const date = new Date().toISOString().replace(/([^T]+)T([^\.]+).*/g, '$1 $2') // Gives format (yyyy-MM-dd HH:mm:ss)
const statistics = [[ 9999, 1, 0, 0, 1, 0, date ]];
const gs = new GoogleSpreadSheet();
gs.insertRow(statistics, process.env.GOOGLE_SPREADSHEET_NAME, 'append');

答案是将valueInputOption更改为“用户输入”:

buildAppendOptions(sheet, data) {
    return {
      spreadsheetId: process.env.GOOGLE_SPREADSHEET_ID,
      range: sheet,
      valueInputOption: 'USER_ENTERED',
      insertDataOption: 'INSERT_ROWS',
      resource: {
        values: data
      }
    }
  }

答案是将valueInputOption更改为“用户输入”:

buildAppendOptions(sheet, data) {
    return {
      spreadsheetId: process.env.GOOGLE_SPREADSHEET_ID,
      range: sheet,
      valueInputOption: 'USER_ENTERED',
      insertDataOption: 'INSERT_ROWS',
      resource: {
        values: data
      }
    }
  }

为了了解您的问题,您能否提供复制问题的脚本?当然,请删除您的个人信息。您是否尝试过将
insertRow
替换为
appendRow
?如果您可以指向指示使用
insertRow
的文档,也会有所帮助。我尝试使用下面的代码,它工作得非常好-``函数myFunction(){const date=new date().toISOString().replace([^T]+]T([^\.]+).*/g,$1$2')//给出格式(yyyyy-MM-dd HH:MM:ss)const gs=SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();gs.appendRow([9999,1,0,0,1,0,date]);}“``为了了解您的问题,您能否提供复制问题的脚本?当然,请删除您的个人信息。您是否尝试过将
insertRow
替换为
appendRow
?如果您可以指向指示使用
insertRow
的文档,也会有所帮助。我尝试使用下面的代码,它工作得非常好-``函数myFunction(){const date=new date().toISOString().replace([^T]+]T([^\.]+).*/g,$1$2')//给出格式(yyyyy-MM-dd HH:MM:ss)const gs=SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();gs.appendRow([9999,1,0,0,1,0,date]);}```