首页 文章

无法使用Google表格API创建新的电子表格

提问于
浏览
1

我正在使用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有效负载 . 未知名称“properties”:无法绑定查询参数 . 在请求消息中找不到字段“属性” .

我也尝试使用属性名称“资源”而不是“属性”,因为我发现在其他工作表 endpoints . 这也没有用,但是当我调试googleapis代码时,会产生不同的错误消息,但也会产生不同的API请求 .

错误:无法创建文件,错误:收到无效的JSON有效负载 . “电子表格”中的未知名称“ Headers ”:找不到字段 .

我还尝试使用Drive API without success创建文件 .

2 回答

  • 0

    哇 . 原来答案是我的两个实验的混合 . 封装资源块内的属性 .

    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中看到 anything 表示这是发送请求的正确方式,因此这不是有效的 .

  • 4

    我建议将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);
            }
        });
    

相关问题