Iemand ervaring met de integratie van NodeJS <-> Google Sheets API

Alles over programmeren en development binnen de IT-wereld
Plaats reactie
Argon
Elite Poster
Elite Poster
Berichten: 1264
Lid geworden op: 21 mei 2007, 22:26
Uitgedeelde bedankjes: 20 keer
Bedankt: 49 keer

Hallo,

Heeft hier iemand ervaring met het uitlezen van Google Sheets bestanden vanuit Nodejs adhv de Sheets API?
Ik ben geen programmeur (dus doe er lang over om bepaalde zaken te bekomen :-) ) maar heb wel al een connectie kunnen leggen tussen NodeJs en Google Sheet.

Nu probeer ik aan de hand van een waarde die in NodeJS voorkomt, deze waarde op te zoeken in het Google Sheet bestand (in kolom B). Eens de waarde in Kolom B gevonden werd, dan zou ik graag de andere waarden van die rij kunnen gebruiken in het NodeJS script.

Dus iemand hier toevallig al wat mee zitten spelen?

Thanks !
ubremoved_539
Deel van't meubilair
Deel van't meubilair
Berichten: 29849
Lid geworden op: 28 okt 2003, 09:17
Uitgedeelde bedankjes: 434 keer
Bedankt: 1972 keer

Kijk gewoon naar de Quickstart... https://developers.google.com/sheets/ap ... art/nodejs

De function listMajors laat zien hoe je een range kan aflopen (je moet er alleen een extra if-statement bij plaatsen) en aan andere cellen kan geraken. Via de search method kan het uiteindelijk nog eenvoudiger... dan heb je geen loop/if nodig.
Argon
Elite Poster
Elite Poster
Berichten: 1264
Lid geworden op: 21 mei 2007, 22:26
Uitgedeelde bedankjes: 20 keer
Bedankt: 49 keer

Ik was reeds gestart met die Quickstart en dat is mij gelukt.

Ik ben dan verder gegaan op volgende site: https://developers.google.com/sheets/api/guides/values Daar staat uitgelegd hoe je cellen kan uitlezen en wegschrijven.

To read a single range of data out of a spreadsheet, use a spreadsheets.values.get request:

Code: Selecteer alles

this.sheetsService.spreadsheets.values.get({
  spreadsheetId,
  range,
}, (err, result) => {
  if (err) {
    // Handle error
    console.log(err);
  } else {
    const numRows = result.values ? result.values.length : 0;
    console.log(`${numRows} rows retrieved.`);
  }
});
Ik veranderde dus die "listMajors" functie met bovenstaande code:

Code: Selecteer alles

function listMajors(auth) {
  this.sheetsService.spreadsheets.values.get({
    spreadsheetId: '1g1pDOh8ns3TvV0CK1C6SU0uEI_V53Aqd2hFzn8EPq',
    range: 'results!A2:J',
  }, (err, result) => {
    if (err) {
      // Handle error
      console.log(err);
    } else {
      const numRows = result.values ? result.values.length : 0;
      console.log(`${numRows} rows retrieved.`);
    }
  });
}
Maar dan krijg ik de volgende foutmelding:

Code: Selecteer alles

  this.sheetsService.spreadsheets.values.get({
                     ^

TypeError: Cannot read property 'spreadsheets' of undefined
    at listMajors (C:\Users\vhauwani\OneDrive - Mohawk Industries\Documents\Prive\Node\index.js:66:22)
    at fs.readFile (C:\Users\vhauwani\OneDrive - Mohawk Industries\Documents\Prive\Node\index.js:32:5)
    at FSReqWrap.readFileAfterClose [as oncomplete] (fs.js:511:3)
Zoals reeds vermeld, ik ben absoluut geen programmeur dus bovenstaande is misschien simpel opgelost voor iemand die er meer mee bezig is, maar ik zit daar dus momenteel wat vast.

Ik volg dus gewoon wat Google handleidingen zodat ik meer inzicht krijg hoe het net werkt. Nadien probeer ik dan wel te bereiken wat ik effectief wil bereiken.

Bedankt!
ubremoved_539
Deel van't meubilair
Deel van't meubilair
Berichten: 29849
Lid geworden op: 28 okt 2003, 09:17
Uitgedeelde bedankjes: 434 keer
Bedankt: 1972 keer

Waar is volgende regel naartoe ?

Code: Selecteer alles

const sheets = google.sheets({version: 'v4', auth});
Argon
Elite Poster
Elite Poster
Berichten: 1264
Lid geworden op: 21 mei 2007, 22:26
Uitgedeelde bedankjes: 20 keer
Bedankt: 49 keer

Stond er dus blijkbaar niet...

Heb het nu gewijzigd als volgt:

Code: Selecteer alles

function listMajors(auth) {
  const sheets = google.sheets({version: 'v4', auth});
  sheets.spreadsheets.values.get({
    spreadsheetId: '1g1pDOh8ns3TvV0CK1C6SU0uEI_V53Aqd2hFzn8EPq',
    range: 'results!A2:J',
  }, (err, result) => {
    if (err) {
      // Handle error
      console.log(err);
    } else {
      const numRows = result.values ? result.values.length : 0;
      console.log(`${numRows} rows retrieved.`);
    }
  });
}
Uitvoer:

Code: Selecteer alles

0 rows retrieved.
Dus de connectie lijkt er nu wel te zijn. Waarvoor dank voor de tip ;-)
Ik kan terug verder prutsen.
Plaats reactie

Terug naar “Development”