NEWS
[Vorlage] Google Tabelle in ioBroker-Datenpunkte
-
Hi,
Google bietet eine einfache API, um Daten aus Google-Tabellen mittels JavaScript (node.js) auszulesen. Das bietet schöne Einsatzzwecke, da Google-Tabellen von "überall" und durch bis zu 100 User gleichzeitig gepflegt werden können.
Mein Einsatzzweck war jetzt primär die Darstellung aktueller Aktienkurse bzw. Wertpapierkurse in ioBroker und VIS.
"Google Tabellen" bietet nämlich mit der Formel =GOOGLEFINANCE schöne Möglichkeiten, Daten zu Wertpapieren abzufragen und in der Google-Tabelle auszugeben (aktueller Kurs, KGV, etc.).Der folgende Code führt alle Zellwerte dann in den ioBroker über.
Quelle von Google Tabellen:
Das Script erstellt dann automatisch folgende Datenpunkte auf Basis der Spaltenüberschriften etc. und aktualisiert diese dann regelmäßig:
Mit dem Datenpunkt "javascript.0.GoogleSheets.Wertpapiere .jsonTable " gibt es außerdem ein JSON, das als JSON-Tabelle in VIS mit dem Widget "basic - HTML" dargestellt werden kann.
Hier der Link zum Script
Github: ioBroker-Script "Google Sheets"Bitte die Hinweise im Script lesen!
-
@Mic sagte in [Vorlage] Google Tabelle in ioBroker-Datenpunkte:
Hi,
Google bietet eine einfache API, um Daten aus Google-Tabellen mittels JavaScript (node.js) auszulesen. Das bietet schöne Einsatzzwecke, da Google-Tabellen von "überall" und durch bis zu 100 User gleichzeitig gepflegt werden können.
Mein Einsatzzweck war jetzt primär die Darstellung aktueller Aktienkurse bzw. Wertpapierkurse in ioBroker und VIS.
"Google Tabellen" bietet nämlich mit der Formel =GOOGLEFINANCE schöne Möglichkeiten, Daten zu Wertpapieren abzufragen und in der Google-Tabelle auszugeben (aktueller Kurs, KGV, etc.).API-Schlüssel erstellen, dabei unter "API-Einschränkungen" auf "Google Sheets API" limitieren ???
-
@sigi234 sagte in [Vorlage] Google Tabelle in ioBroker-Datenpunkte:
API-Schlüssel erstellen, dabei unter "API-Einschränkungen" auf "Google Sheets API" limitieren ???
Korrekt. Vorgehensweise:
- Link-Freigabe für Tabelle: TabelleIn Google Tabellen oben auf den grünen "Freigabe"-Button klicken. Da die Linkfreigabe entsprechend aktivieren.
- "Google Sheets API" aktivieren
- API-Schlüssel erstellen, dabei unter "API-Einschränkungen" auf "Google Sheets API" limitieren (zur Sicherheit)
Zu Punkt 3:
-
@Mic sagte in [Vorlage] Google Tabelle in ioBroker-Datenpunkte:
@sigi234 sagte in [Vorlage] Google Tabelle in ioBroker-Datenpunkte:
API-Schlüssel erstellen, dabei unter "API-Einschränkungen" auf "Google Sheets API" limitieren ???
Korrekt. Vorgehensweise:
- Link-Freigabe für Tabelle: TabelleIn Google Tabellen oben auf den grünen "Freigabe"-Button klicken. Da die Linkfreigabe entsprechend aktivieren.
- "Google Sheets API" aktivieren
- API-Schlüssel erstellen, dabei unter "API-Einschränkungen" auf "Google Sheets API" limitieren (zur Sicherheit)
Zu Punkt 3:
Erledigt.
Welchen Code muss ich wo eingeben in Excel
01:43:53.768 error javascript.0 (8624) script.js.Test.Google_Tabellen compile failed: at script.js.Test.Google_Tabellen:223
-
- Du hast im Script unter GOOGLE_SPREADSHEET_ID eine komplette URL eingetragen, aber da darf nur die Google Spreadsheet ID rein. Siehe auch https://developers.google.com/sheets/api/guides/concepts
- Zu GOOGLEFINANCE: Siehe hier die Beschreibung der Funktion: https://support.google.com/docs/answer/3093281?hl=de
Generell kannst du eine x-beliebige Tabelle zum Testen nehmen, leer darf sie halt nicht sein und muss mit den Einstellungen des Scripts übereinstimmen.
-
Ok soweit komme ich jetzt:
Im Skript kommt noch immer:
15:21:18.755 info javascript.0 (8624) Stop script script.js.Test.Google_Tabellen 15:21:18.761 info javascript.0 (8624) Start javascript script.js.Test.Google_Tabellen 15:21:18.762 error javascript.0 (8624) script.js.Test.Google_Tabellen compile failed: at script.js.Test.Google_Tabellen:223 15:22:01.561 info javascript.0 (8624) Stop script script.js.Test.Google_Tabellen 15:22:01.565 info javascript.0 (8624) Start javascript script.js.Test.Google_Tabellen 15:22:01.565 error javascript.0 (8624) script.js.Test.Google_Tabellen compile failed: at script.js.Test.Google_Tabellen:223
LOG:
javascript.0 2019-12-29 15:22:01.566 error (8624) at process._tickCallback (internal/process/next_tick.js:68:7) javascript.0 2019-12-29 15:22:01.566 error (8624) at promise.then (C:\Program Files\iobroker\Test\node_modules\standard-as-callback\built\index.js:19:49) javascript.0 2019-12-29 15:22:01.566 error (8624) at tryCatcher (C:\Program Files\iobroker\Test\node_modules\standard-as-callback\built\utils.js:11:23) javascript.0 2019-12-29 15:22:01.566 error (8624) at client.get (C:\Program Files\iobroker\Test\node_modules\iobroker.js-controller\lib\states\statesInRedis.js:581:17) javascript.0 2019-12-29 15:22:01.566 error (8624) at adapter.getForeignState (C:\Program Files\iobroker\Test\node_modules\iobroker.javascript\main.js:855:17) javascript.0 2019-12-29 15:22:01.566 error (8624) at createProblemObject (C:\Program Files\iobroker\Test\node_modules\iobroker.javascript\main.js:1264:17) javascript.0 2019-12-29 15:22:01.566 error (8624) at prepareScript (C:\Program Files\iobroker\Test\node_modules\iobroker.javascript\main.js:1211:37) javascript.0 2019-12-29 15:22:01.565 error (8624) at compile (C:\Program Files\iobroker\Test\node_modules\iobroker.javascript\main.js:988:28) javascript.0 2019-12-29 15:22:01.565 error (8624) at Object.createScript (vm.js:277:10) javascript.0 2019-12-29 15:22:01.565 error (8624) at new Script (vm.js:83:7) javascript.0 2019-12-29 15:22:01.565 error (8624) SyntaxError: Invalid regular expression: missing / javascript.0 2019-12-29 15:22:01.565 error (8624) ^ javascript.0 2019-12-29 15:22:01.565 error (8624) strTemp = strTemp.replace(/[+/g, ""); // remove all >[< javascript.0 2019-12-29 15:22:01.565 error at script.js.Test.Google_Tabellen:223 javascript.0 2019-12-29 15:22:01.565 error (8624) script.js.Test.Google_Tabellen compile failed: javascript.0 2019-12-29 15:22:01.565 info (8624) Start javascript script.js.Test.Google_Tabellen
-
Deine Google-Tabelle ergibt für das Script keinen Sinn. Du brauchst eine Tabelle wie im Screenshot oben (erster Beitrag).
-
Habe das Script aktualisiert. Mit Version 0.2. gibt es nun einen Datenpunkt ".jsonTable". Damit kann der Tabelleninhalt mittels Widget "basic - Table" ausgegeben werden.
Siehe hierzu auch die neuen Einstellungen:
// JSON-Tabelle: Welche Spalten sollen für die JSON-Tabelle verwendet werden? 1. Spalte = 1, 2. Spalte 2, usw. // Hiermit kann ebenso die Spalten-Reihenfolge bestimmt werden. const GOOGLE_JSON_COLUMNS = [1, 6, 4, 5]
Hier der Link zum Script:
Github: ioBroker-Script "Google Sheets" -
@Mic sagte in [Vorlage] Google Tabelle in ioBroker-Datenpunkte:
Deine Google-Tabelle ergibt für das Script keinen Sinn. Du brauchst eine Tabelle wie im Screenshot oben (erster Beitrag).
Was mache ich dann falsch?
-
@sigi234 sagte in [Vorlage] Google Tabelle in ioBroker-Datenpunkte:
Was mache ich dann falsch?
Zum Testen: Einfach diese Tabelle abtippen (müssen nicht alle Spalten sein, und musst auch nicht alles 1:1 übernehmen):
-
@Mic sagte in [Vorlage] Google Tabelle in ioBroker-Datenpunkte:
@sigi234 sagte in [Vorlage] Google Tabelle in ioBroker-Datenpunkte:
Was mache ich dann falsch?
Zum Testen: Einfach diese Tabelle abtippen (müssen nicht alle Spalten sein, und musst auch nicht alles 1:1 übernehmen):
Ach so, dachte die Zellen werden automatisch ausgefüllt.
-
@sigi234 sagte in [Vorlage] Google Tabelle in ioBroker-Datenpunkte:
Ach so, dachte die Zellen werden automatisch ausgefüllt.
Nein
Dieses Script holt sich nur alle Daten von Google Tabellen, um diese dann in ioBroker darzustellen.Umgekehrt wäre auch möglich, aber das ist nicht Ziel dieses Scripts.
-
Jetzt hab ich es gecheckt.
Möchte ich jetzt den Eurokurs hinzufügen, gebe ich das einfach in die Tabelle ein, ausschlaggebend ist der ISIN?
-
@sigi234
Für den aktuellen Kurs eines Wertpapiers in Euro gibst du folgende Formel ein:=googlefinance("FRA:MSF";"price")
Dabei entspricht im ersten Teil "
FRA:MSF
":FRA
: die Frankfurter Börse.MSF
: das ist das Ticker-Symbol, in diesem Beispiel steht MSF für Microsoft.
z.B. CIS ist das Ticker-Symbol für die Cisco-Aktie, APC für Apple, usw. Etwa über folgenden Link bekommt man das Tickersymbol (hier als "Kürzel" bezeichnet): https://www.boerse-frankfurt.de/aktie/cisco-systems-inc
Die Google Tabellen Formel für Cisco wäre also
=googlefinance("FRA:CIS";"price")
Neben dem aktuellen Kurs kann man sich z.B. auch das KGV (Kurs-Gewinn-Verhältnis) ausgeben lassen. Von Cisco wäre das:
=googlefinance("FRA:CIS";"pe")
Details siehe https://support.google.com/docs/answer/3093281?hl=de
-
Servus,
ich versuche mit dem Script die Werte meines Pools aus einer Google Tabelle zu bekommen, aber irgendwo hab ich einen Fehler drin.
Folgende Fehlermedlung erhalte ich:javascript.0 (6770) script.js.Service.Poolwerte: Antwort von Google: { "error": { "code": 400, "message": "Unable to parse range: Pool!A1:E9999", "status": "INVALID_ARGUMENT" } }
API sollte passen, die Tabelle ist auch freigegeben.
Wie könnte ich den Fehler finden?
Grüße,
Oliver -
@Nanouk sagte in [Vorlage] Google Tabelle in ioBroker-Datenpunkte:
Wie könnte ich den Fehler finden?
Hi, hast du schon mal nach dem Fehler im Web/Google gesucht? Also z.B. nach
error 400 Unable to parse range
-
@Mic said in [Vorlage] Google Tabelle in ioBroker-Datenpunkte:
error 400 Unable to parse range
Hi, ja hab ich und ich hab auch schon mit A2:E30 etc. probiert, da ich dachte es liegt vielleicht an den Namen, welche ich in Zeile 1 habe, oder dass es mit E9999 vielleicht einfach zu hoch ist. Es führte aber kein Weg zum Erfolg.
Gruß , Oliver
-
So, wenn ich im Script den Namen leer lasse, dann geht es.
Über IFTTT wird die Google Tabelle immer wieder aktualisiert.
Dabei wird immer eine Reihe hinzugefügt.Hat jemand eine Idee wie man es lösen kann, dass das Script immer nur nie letzte oder die letzten 4 Zeilen zieht?
Mit Range geht es ja nicht weil immer eine neue Zeile hinzukommt.Grüße Oliver