【问题标题】:Google Sheets Client undefined with Node谷歌表格客户端未定义节点
【发布时间】:2018-07-30 13:59:48
【问题描述】:

我无法在节点中抓取工作表对象。我能够进行身份验证,但是当我尝试阅读给定的工作表时,client.sheets 返回未定义。这很奇怪,因为工作表对象填充了如下所示的数据。即使我像readSheets(gapi.client)一样传入客户端并将变量记录在readSheets中,它仍然返回未定义。为什么会这样?

    var CLIENT_ID = 'MYID.apps.googleusercontent.com';
    var API_KEY = 'MYAPIKEY';
    var DISCOVERY_DOCS = ["https://sheets.googleapis.com/$discovery/rest?version=v4"];
    var SCOPES = "https://www.googleapis.com/auth/spreadsheets";

    gapi.load('client', {
        callback: function() {
          initClient();
        },
        onerror: function() {
          alert('gapi.client failed to load!');
        }
      });

    const initClient = () => {
        console.log(gapi.client)
        gapi.client.init({
            apiKey: API_KEY,
            clientId: CLIENT_ID,
            discoveryDocs: DISCOVERY_DOCS,
            scope: SCOPES
        });
        readSheets();
    }

    function readSheets() {
        console.log(gapi.client.sheets); // undefined
        gapi.client.sheets.spreadsheets.values.get({
            spreadsheetId: 'MySpreadsheetID',
            majorDimension: "COLUMNS",
            range: 'Sheet1!A1:B2',
        }).then(function(response) {
            console.log(response.result.values)
        }, function(response) {
            console.log('Error: ' + response.result.error.message);
        }); 
    }

gapi.client 然后gapi.client.sheets 在控制台中:

【问题讨论】:

  • 如果我误解了您的问题,我很抱歉。我可以问你运行脚本的方法吗?因为我认为你的脚本可能是 Javascript。
  • @Tanaike 你是正确的js
  • 感谢您的回复。您在浏览器上运行脚本。我是这样理解的。在这种情况下,Node.js 用在哪里?
  • @tanaike localhost?
  • 我以为使用gaip的时候需要加载https://apis.google.com/js/api.js或者https://apis.google.com/js/client.js。您可以在here 看到示例脚本。但是因为我不确定你的 Node.js 环境,所以我问了。

标签: node.js google-sheets-api


【解决方案1】:

您不应在后端(在 NodeJS 环境中)使用 Browser aka Client-Side aka GAPI。

对于 NodeJS,您应该使用 this 库 - googleapis

对于浏览器,您应该使用 GAPI (https://apis.google.com/js/api.js)。如果您想将 TypeScript 与 GAPI 一起使用 - 您应该安装 @types/gapi.client.sheets 或使用 google-api-typings-generator 自己生成类型。

更多关于这两个用例的区别的详细信息,请参考:JavaScript VS NodeJS Google API Clients

【讨论】:

    猜你喜欢
    • 2019-05-08
    • 1970-01-01
    • 2021-09-06
    • 1970-01-01
    • 1970-01-01
    • 2018-04-27
    • 2018-03-26
    • 2013-09-05
    • 2017-10-28
    相关资源
    最近更新 更多