Google sheets 使用Javascript在Google电子表格中插入日期(yyyy-MM-dd-HH:MM:ss)会添加一个撇号
我使用Node.js中的“googleapis”库将新行附加到Google电子表格中。这是我希望附加的数据示例: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 }
[ 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]);}```