NEWS

[Vorlage] Google Tabelle in ioBroker-Datenpunkte

  • Developer

    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:
    GoogleTable.png

    Das Script erstellt dann automatisch folgende Datenpunkte auf Basis der Spaltenüberschriften etc. und aktualisiert diese dann regelmäßig:
    Datenpunkte_GoogleSheets.png

    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!

  • Forum Testing Most Active

    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 ???

  • Developer

    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:

    1. Link-Freigabe für Tabelle: TabelleIn Google Tabellen oben auf den grünen "Freigabe"-Button klicken. Da die Linkfreigabe entsprechend aktivieren.
    2. "Google Sheets API" aktivieren
    3. API-Schlüssel erstellen, dabei unter "API-Einschränkungen" auf "Google Sheets API" limitieren (zur Sicherheit)

    Zu Punkt 3:
    apisz.png

  • Forum Testing Most Active

    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:

    1. Link-Freigabe für Tabelle: TabelleIn Google Tabellen oben auf den grünen "Freigabe"-Button klicken. Da die Linkfreigabe entsprechend aktivieren.
    2. "Google Sheets API" aktivieren
    3. API-Schlüssel erstellen, dabei unter "API-Einschränkungen" auf "Google Sheets API" limitieren (zur Sicherheit)

    Zu Punkt 3:
    apisz.png

    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
    
    

    Screenshot (1089)_LI.jpg

    Screenshot (1091).png

  • Developer

    1. 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
    2. 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.

  • Forum Testing Most Active

    Mic

    Ok soweit komme ich jetzt:

    Screenshot (1107).png

    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
    
  • Developer

    Deine Google-Tabelle ergibt für das Script keinen Sinn. Du brauchst eine Tabelle wie im Screenshot oben (erster Beitrag).

  • Developer

    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"

  • Forum Testing Most Active

    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?

  • Developer

    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):
    Bild Text

  • Forum Testing Most Active

    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):
    Bild Text

    Ach so, dachte die Zellen werden automatisch ausgefüllt.

  • Developer

    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.

  • Forum Testing Most Active

    Mic

    Jetzt hab ich es gecheckt.😂

    Screenshot (1112).png

    Möchte ich jetzt den Eurokurs hinzufügen, gebe ich das einfach in die Tabelle ein, ausschlaggebend ist der ISIN?

  • Developer

    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 ":

    1. FRA: die Frankfurter Börse.
    2. 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
      tickersym.png

    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

  • Developer

    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

Suggested Topics

2.0k
Online

34.7k
Users

40.8k
Topics

558.8k
Posts