Node.js 无法使用Google Sheets API创建新的电子表格
我正在使用googleapis软件包创建一个新的Google电子表格,但失败了。当我使用 结果, 错误:无法创建文件,错误:接收到无效的JSON负载。 未知名称“属性”:无法绑定查询参数。领域 在请求消息中找不到“属性” 我还尝试使用属性名“resource”而不是“properties”,因为我在其他图纸端点中发现了这一点。这也不起作用,但在调试googleapis代码时,会产生不同的错误消息和不同的API请求 错误:无法创建文件,错误:接收到无效的JSON负载。 “电子表格”处的未知名称“标题”:找不到字段Node.js 无法使用Google Sheets API创建新的电子表格,node.js,google-drive-api,google-sheets-api,Node.js,Google Drive Api,Google Sheets Api,我正在使用googleapis软件包创建一个新的Google电子表格,但失败了。当我使用 结果, 错误:无法创建文件,错误:接收到无效的JSON负载。 未知名称“属性”:无法绑定查询参数。领域 在请求消息中找不到“属性” 我还尝试使用属性名“resource”而不是“properties”,因为我在其他图纸端点中发现了这一点。这也不起作用,但在调试googleapis代码时,会产生不同的错误消息和不同的API请求 错误:无法创建文件,错误:接收到无效的JSON负载。 “电子表格”处的未知名称“标
我还尝试过使用驱动器API创建文件。哇。结果证明答案是我的两个实验的混合。封装资源块内部的属性
Google.prototype.createSheet = function(filename, callback) {
var services = google.sheets('v4');
services.spreadsheets.create({
resource : {properties:{title:filename}},
auth : this.auth
}, function(err,response) {
if( err ) {
console.log('Error : unable to create file, ' + err);
return;
} else {
console.dir(response);
}
});
}
我在中没有看到任何东西表明这是发送请求的正确方式,因此即使它有效,也不是很令人安慰。哇。结果证明答案是我的两个实验的混合。封装资源块内部的属性
Google.prototype.createSheet = function(filename, callback) {
var services = google.sheets('v4');
services.spreadsheets.create({
resource : {properties:{title:filename}},
auth : this.auth
}, function(err,response) {
if( err ) {
console.log('Error : unable to create file, ' + err);
return;
} else {
console.dir(response);
}
});
}
我在中没有看到任何东西表明这是发送请求的正确方式,因此即使它很有效,也不是很舒服。我建议使用JWT/OAuth2.0和一个可以通过谷歌云平台设置的服务帐户,如下所示:
const {google} = require('googleapis');
let sheets = google.sheets('v4');
const serviceAccount = { INSERT_JSON_HERE };
const client = new google.auth.JWT(
serviceAccount.client_email,
null,
serviceAccount.private_key,
['https://www.googleapis.com/auth/spreadsheets',
'https://www.googleapis.com/auth/drive',
'https://www.googleapis.com/auth/drive.file'],
null
);
return new Promise((resolve, reject) => {
sheets.spreadsheets.create({
auth: client,
}, (err, obj) => {
if (err) {
console.log(err);
reject(err);
} else {
console.log(`New Spreadsheet ID: ${obj.data.spreadsheetId}`);
resolve(obj);
}
});
我建议将JWT/OAuth2.0与服务帐户一起使用,您可以通过Google云平台进行设置,如下所示:
const {google} = require('googleapis');
let sheets = google.sheets('v4');
const serviceAccount = { INSERT_JSON_HERE };
const client = new google.auth.JWT(
serviceAccount.client_email,
null,
serviceAccount.private_key,
['https://www.googleapis.com/auth/spreadsheets',
'https://www.googleapis.com/auth/drive',
'https://www.googleapis.com/auth/drive.file'],
null
);
return new Promise((resolve, reject) => {
sheets.spreadsheets.create({
auth: client,
}, (err, obj) => {
if (err) {
console.log(err);
reject(err);
} else {
console.log(`New Spreadsheet ID: ${obj.data.spreadsheetId}`);
resolve(obj);
}
});
他们在中添加了关于
resource
的注释。他们在中添加了关于resource
的注释。您应该通过添加一些解释性文本、要做的链接等来改进此代码答案。您应该通过添加一些解释性文本、要做的链接等来改进此代码答案