我使用googleapis软件包创建了新的Google电子表格,但它失败了。当我使用web-based tools in the Google API documentation时,相同的请求有效。
Google.prototype.createSheet = function(filename, callback) {
var services = google.sheets('v4');
services.spreadsheets.create({
properties : {title:filename},
auth : this.auth
}, function(err,response) {
if( err ) {
console.log('Error : unable to create file, ' + err);
return;
} else {
console.dir(response);
}
});
}
结果,
错误:无法创建文件,错误:收到的JSON有效负载无效。 未知名称"属性":无法绑定查询参数。领域 '属性'在请求消息中找不到。
我还尝试使用"资源"的属性名称。而不是"属性"因为我发现在其他工作表端点。当我调试googleapis代码时,这也没有起作用,但导致了不同的错误消息以及不同的API请求。
错误:无法创建文件,错误:收到的JSON有效负载无效。 未知名称"标题" at'电子表格':找不到字段。
我还尝试使用云端硬盘API without success创建文件。
答案 0 :(得分:5)
哇。原来答案是我的两个实验的混合。封装资源块内的属性。
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 API documentation中看不到 任何 ,表明这是发送请求的正确方式,因此这不是'即使它有效,也会非常安慰。
答案 1 :(得分:0)
我建议将JWT / OAuth2.0用于可以通过Google Cloud Platform设置的服务帐户,如下所示:
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);
}
});