Node.js – Verwenden der Google Sheets API mit OAuth 2

Blog

Müssen Sie den Inhalt einer Google Sheets-Tabelle aus Ihrer Node.js-Anwendung lesen? Oder müssen Sie möglicherweise in eine Google Sheets-Datei schreiben oder diese löschen? In diesem Tutorial zeige ich Ihnen, wie Sie die Google Sheets API v4 in Node.js verwenden, einschließlich des Abrufens von Anmeldeinformationen und Codebeispielen.



Vorbereitung

Stellen Sie vor dem Codieren sicher, dass Sie über ein Google Cloud-Projekt mit aktivierter Abrechnung und aktivierter Google Tabellen-API verfügen. Bitte gehen Sie wie folgt vor, falls Sie dies noch nicht getan haben.






  1. Erstellen oder wählen Sie ein Google Cloud-Projekt aus

Zur Nutzung dieses Dienstes ist ein Google Cloud-Projekt erforderlich. Offen Google Cloud-Konsole , dann erstellen Sie ein neues Projekt oder wählen Sie ein bestehendes Projekt aus



  1. Abrechnung für das Projekt aktivieren

Wie bei anderen Cloud-Plattformen erfordert Google, dass Sie die Abrechnung für Ihr Projekt aktivieren. Wenn Sie die Abrechnung nicht eingerichtet haben, öffnen Sie Abrechnungsseite .



  1. Google Tabellen-API aktivieren

Um eine Google Cloud API zu verwenden, müssen Sie sie zuerst aktivieren. Offen diese Seite um die Google Tabellen-API zu aktivieren.






Google-Client-Secret abrufen

Um sich von Google authentifizieren zu lassen, verwenden wir OAuth 2. Die folgenden Schritte zeigen Ihnen, wie Sie ein Client-Geheimnis erhalten.

So zeigen Sie ein gelöschtes Twitter-Konto an
  • Offen Seite mit den Google Cloud API-Anmeldeinformationen
  • Klicken Sie auf die Schaltfläche Click Credentials und wählen Sie dann OAuth-Client-ID
  • Geben Sie den Namen des OAuth-Clients ein. Geben Sie unter Autorisierte Weiterleitungs-URIs die URL ein, an die der Nutzer (oder Sie) nach der Authentifizierung bei Google weitergeleitet wird. Wenn Sie die Domain noch nie zur Liste der autorisierten Domains hinzugefügt haben, werden Sie aufgefordert, Ihre Website auf dem OAuth-Zustimmungsbildschirm hinzuzufügen. Klicken Sie danach auf die Schaltfläche Erstellen und eine geheime Clientdatei sollte auf Ihren Computer heruntergeladen werden.

Code

Um den Zugriff auf Google Cloud APIs zu vereinfachen, verwenden wir die googleapis-Bibliothek. Es hat die Klasse google.sheets, die den Aufruf an die Tabellen-API umschließt. Fügen Sie es dem Abschnitt 'Abhängigkeiten' Ihrer package.json hinzu.

'dependencies': { ... 'googleapis': '~32.0.0', ... }

Um google.sheets verwenden zu können, müssen Sie eine Authentifizierung übergeben. client.google.auth.OAuth2 ist ein Konstruktor, der eine OAuth2-Clientinstanz zurückgibt. Es verfügt über die Methode setCredentials zum Festlegen der zu verwendenden Anmeldeinformationen, bei denen es sich um das Zugriffstoken und das Aktualisierungstoken handelt. Die Frage ist, wie man diese Token bekommt.

Zuerst müssen Sie Ihre Anwendung autorisieren, indem Sie eine eindeutige URL aufrufen. Verwenden Sie den folgenden Code, um die URL zu generieren.

google-oauth-generate-url.js

const fs = require('fs'); const { google } = require('googleapis'); const credentials = JSON.parse(fs.readFileSync('google-client-secret.json', 'utf-8')); const { client_secret: clientSecret, client_id: clientId, redirect_uris: redirectUris, } = credentials.installed; const oAuth2Client = new google.auth.OAuth2( clientId, clientSecret, redirectUris[0], ); // Generate a url that asks permissions for Gmail scopes const SCOPES = [ 'https://www.googleapis.com/auth/spreadsheets', ]; const url = oAuth2Client.generateAuthUrl({ access_type: 'offline', scope: SCOPES, }); console.info(`authUrl: ${url}`);

Wenn es erfolgreich ausgeführt wird, sollten Sie die URL auf Ihrer Konsole abrufen. Öffnen Sie die URL mit einem Webbrowser. Möglicherweise müssen Sie sich anmelden oder ein Konto auswählen, wenn Sie mehrere Konten haben. Anschließend werden Sie zu einer Seite weitergeleitet, auf der Sie um Erlaubnis gebeten werden, Ihrer Anwendung die Verwaltung von Google Sheet-Tabellen zu gestatten.

aws-Toolkit für Azure-Entwickler

Wenn erfolgreich, sollten Sie den Code erhalten. Jetzt ist es an der Zeit, die Token zu erhalten. Verwenden Sie das unten stehende Skript und ersetzen Sie const code value durch den Code, den Sie haben.

google-oauth-get-tokens.js

const fs = require('fs'); const { google } = require('googleapis'); // Replace with the code you've got from the previous step const code = '4/AABBCC-abcdEFGH1-aBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDe'; const credentials = JSON.parse(fs.readFileSync('google-client-secret.json', 'utf-8')); const { client_secret: clientSecret, client_id: clientId, redirect_uris: redirectUris, } = credentials.installed; const oAuth2Client = new google.auth.OAuth2( clientId, clientSecret, redirectUris[0], ); const getToken = async () => { const { tokens } = await oAuth2Client.getToken(code); console.info(tokens); fs.writeFileSync('google-oauth-token.json', JSON.stringify(tokens)); }; getToken();

Führen Sie das obige Skript aus. Bei Erfolg sollte eine Datei namens google-oauth-token.json generiert werden, die das Zugriffstoken und das Aktualisierungstoken enthält.

{ access_token: 'abcd.abCDef12abCDef12abCDef12abCDef12abCDef12abCDef12abCDef12abCDef12abCDef12abCDef12abCDef12abCDef12abCDef12abCDef12abCDef12abCD', token_type: 'Bearer', refresh_token: '1/abc123abc123abc123abc123abc123abc123abc123a', expiry_date: 1529136753542 }

Nachdem wir die Token erhalten haben, können wir jetzt einen OAuth2-Client erstellen. Die Bibliothek kann automatisch ein neues Zugriffstoken anfordern, wenn das aktuelle abgelaufen ist, sodass wir das Token nicht manuell erneuern müssen. Unten ist der Code für die Authentifizierung mit OAuth 2.

Helfer/google-sheet.js

const _ = require('lodash'); const fs = require('fs'); const { google } = require('googleapis'); const credentials = JSON.parse(fs.readFileSync('google-credentials.json', 'utf-8')); const { client_secret: clientSecret, client_id: clientId, redirect_uris: redirectUris, } = credentials.installed; const oAuth2Client = new google.auth.OAuth2( clientId, clientSecret, redirectUris[0], ); const token = fs.readFileSync('google-oauth-token.json', 'utf-8'); oAuth2Client.setCredentials(JSON.parse(token));

Eine Tabellenkalkulation wird durch ihre ID referenziert. Die ID ist Teil der URL, wenn Sie die Tabelle öffnen. Der fett gedruckte Teil der URL unten ist die ID. https://docs.google.com/spreadsheets/d/ 12ABc12ABc12ABc12ABc12ABc12ABc123ABc-1234abcd /edit #gid = 1234512345.

Ein weiterer Begriff, den Sie verstehen müssen, ist Reichweite. Ein Bereich wird durch die A1-Notation angegeben. Im Folgenden finden Sie einige Beispiele für die Verwendung der Google Sheets-API in Node.js

Eine Tabelle lesen

Helfer/google-sheet.js

/** * Read a spreadsheet. * @param {string} spreadsheetId * @param {string} range * @returns {Promise.} */ exports.read = async (spreadsheetId, range) => { const sheets = google.sheets({ version: 'v4', auth: oAuth2Client }); return sheets.spreadsheets.values.get({ spreadsheetId, range, }) .then(_.property('data.values')); };

Inhalt an eine Tabelle anhängen

Helfer/google-sheet.js

/** * Append content to the next line of a spreadsheet on specified range. * @param {string} spreadsheetId * @param {string} range * @returns {Promise} */ exports.append = async (spreadsheetId, range, values) => { const sheets = google.sheets({ version: 'v4', auth: this.oAuth2Client }); return sheets.spreadsheets.values.append({ spreadsheetId, range, valueInputOption: 'USER_ENTERED', resource: { values }, }); }

Zellen in einer Tabelle aktualisieren

Helfer/google-sheet.js

Expo Over-the-Air-Updates
/** * Update cells on a spreadsheet. * @param {string} spreadsheetId * @param {string} range * @returns {Promise} */ exports.update = async (spreadsheetId, range, values) => { const sheets = google.sheets({ version: 'v4', auth: this.oAuth2Client }); return sheets.spreadsheets.values.update({ spreadsheetId, range, valueInputOption: 'USER_ENTERED', resource: { values }, }); }

Erstellen Sie eine neue Tabelle

Helfer/google-sheet.js

/** * Create a new spreadsheet. * @param {string} spreadsheetId * @param {string} range * @returns {Promise} */ exports.create = async (title) => { const sheets = google.sheets({ version: 'v4', auth: this.oAuth2Client }); return sheets.spreadsheets.create({ resource: { properties:{ title } } }); }

Anwendungsbeispiel

beispiel.js

const helpers = require('helpers/google-sheet'); const tryGoogleSheets = async () => { await helpers.read('the-spreadsheet-id', 'Sheet1!A:Z'); await helpers.append('the-spreadsheet-id', 'Access!Y:Z', [ ['1', '2', '3'], ['4', '5', '6'] ]); await helpers.update('the-spreadsheet-id', 'Access!Y7:AA', [ ['A', 'B', 'C'], ['D', 'E', 'F'] ]); await helpers.create('Example spreadsheet'); };

Erfahren Sie mehr

Der komplette Node.js-Entwicklerkurs (2. Auflage)

erfordern ist nicht definiert js

Lernen und verstehen Sie NodeJS

Node JS: Erweiterte Konzepte

GraphQL: GraphQL lernen mit Node.Js

Angular (Angular 2+) & NodeJS - The MEAN Stack Guide

Anfänger Full Stack Webentwicklung: HTML, CSS, React & Node

Node mit React: Fullstack-Webentwicklung

MERN Stack von vorne nach hinten: Full Stack React, Redux & Node.js

#node-js

codequs.com

Node.js – Verwenden der Google Sheets API mit OAuth 2

Müssen Sie den Inhalt einer Google Sheets-Tabelle aus Ihrer Node.js-Anwendung lesen? Oder müssen Sie möglicherweise in eine Google Sheets-Datei schreiben oder diese löschen? In diesem Tutorial zeige ich Ihnen, wie Sie die Google Sheets API v4 in Node.js verwenden, einschließlich des Abrufens von Anmeldeinformationen und Codebeispielen.