Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 无法使用Google Sheets API创建新的电子表格_Node.js_Google Drive Api_Google Sheets Api - Fatal编程技术网

Node.js 无法使用Google Sheets API创建新的电子表格

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负载。 “电子表格”处的未知名称“标

我正在使用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
的注释。您应该通过添加一些解释性文本、要做的链接等来改进此代码答案。您应该通过添加一些解释性文本、要做的链接等来改进此代码答案