Я использую библиотеку googleapis с Node.js для добавления новых строк в таблицу Google.Это пример данных, которые я хочу добавить:
[ 9999, 1, 0, 0, 1, 0, '2019-09-19 14:16:10' ]
После добавления данных я вижу, что электронная таблица Google каким-то образом сумела добавить апостроф в начале значения даты.Это происходит постоянно и является проблемой, так как значение ячейки теперь считается строкой, а не датой, и мне нужна дата, чтобы мой более поздний запрос сортировался по дате и времени.Вот результат значения ячейки:
'2019-09-19 14: 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');