Aktive Zelle auslesen mit einem Google Tabellen Script
In dem Video – Tutorial unten zeige ich Euch wie Ihr mit Google Tabellen Script die aktive Zelle auslesen könnt und die Daten in einer anderen Zelle ausgeben könnt. Das interessante an diesem Script ist ĂŒbrigens auch das es aufgerufen wird wenn sich in der Tabelle etwas Ă€ndert. DafĂŒr sorgt die Funktion onEdit.
Wie Ihr seht macht mir das Programmieren mit Google Script richtig SpaĂ und das erstellen von Tutorials reiĂt bei mir im Moment nicht ab. Ich denke das Ihr da noch einiges zu erwarten habt. Wenn Ihr weitere Ideen fĂŒr Tutorials habt oder an einem Punkt nicht weiter kommt dann sagt ruhig bescheid, ich werde dann meinen Focus mehr in diese Richtung lenken und wenn es die Zeit zulĂ€sst natĂŒrlich gerne entsprechende Tutorials erstellen. Im Moment habe ich zwar schon eine ziemlich umfangreiche TODO – Liste und Ideen zu Tutorials , aber ob das wirklich andere interessiert erfahre ich immer erst viel spĂ€ter nĂ€mlich durch die Anzahl der Aufrufe đ
Dieses Video – Tutorial ist fĂŒr AnfĂ€nger gedacht die sich im Umgang von Google Tabellen Script noch nicht so auskennen und dementsprechend wird es auch in sehr einfacher Form prĂ€sentiert. Ihr lernt in diesem Video natĂŒrlich auch wie das Script der Tabelle ĂŒber den Scripteditor hinzugefĂŒgt wird.
Das dazugehörige Video – Tutorial befindet sich weiter unten und Ihr könnt es entweder hier schauen oder direkt bei YouTube.
Hier das Script "Aktive Zelle auslesen" zum kopieren.
// Funktion die bei einer Ănderung aufgerufen wird. function onEdit(e){ // ruft die Hauptfunktion auf infosAktiveZelle(); } // Hauptfunktion function infosAktiveZelle(){ // zuweisen der aktuellen Position in die Variable aktivePosition var aktivePosition=SpreadsheetApp.getActiveRange().getA1Notation(); // zuweisen des Wertes von der aktuellen Position in die Variable aktivePositionWert var aktivePositionWert=SpreadsheetApp.getActiveRange().getValue(); // Ausgabe der aktuellen Position in Zelle A2 SpreadsheetApp.getActiveSheet().getRange("A2").setValue(aktivePosition); // Ausgabe des Wertes der aktuellen Position in Zelle B2 SpreadsheetApp.getActiveSheet().getRange("B2").setValue(aktivePositionWert); }
Die Benutzung des Scriptes erfolgt natĂŒrlich wie immer auf eigene Gefahr.
Euch gefÀllt die Datei und Ihr wollt Euch unbedingt bedanken?
Hier ist meine AMAZON – Wunschliste [HIER KLICKEN] đ
Das könnte Dich auch interessieren
22 Comments
Hallo Chris, zu diesem Toptorial habe ich noch eine Frage: Kann man auch eine ganze Zeile auslesen und diese dann unter die letzte – in der Tabelle vorhandenen Zeile – einfĂŒgen? Ziel ist, immer den Inhalt der vorherigen Zeile 1:1 unter die letzte Zeile noch einmal einzuifĂŒgen.
Herzlichen Dank.
Schau Dir mal den nachfolgenden Code an. Damit kannst Du die gerade bearbeitete Zeile in die letzte Zeile kopieren. Allerdings wird nach jeder Ănderung einer Zelle das ganze nach unten kopiert wenn Du wie im Beispiel den Funktions-Aufruf in onEdit lĂ€sst.
Die 50 im Bereich von getRange gibt die Anzahl der zu kopierenden Spalten an. Hier kannst Du den Wert ja entsprechend anpassen.
Ansonsten gibt es noch die Funktionen moveTo und copyTo.
var aktiveZeile=SpreadsheetApp.getActiveRange().getRow();
var ganzeZeile=SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getRange(aktiveZeile,1,1,50).getValues();
SpreadsheetApp.getActiveSheet().getRange((SpreadsheetApp.getActiveSheet().getLastRow()+1),1,1,50).setValues(ganzeZeile);
Hallo,
prima, Deine Tutorials, danke!
Ich möchte in einer Zelle einen Wert aus einem Dropdown Katalog auswĂ€hlen und dann in der Zelle rechts daneben das (Ănderungs-) Datum eintragen. Wie kann ich das am besten bewerkstelligen?
Danke!
GruĂ
kraeMit
In dem Tutorial steckt eigentlich schon fast alles drin was Du brauchst.
https://toptorials.com/zeitstempel-mit-benutzer-als-notiz-google-tabellen-script/
Das ganze kannst Du dann noch in eine IF Abfrage packen um nur bestimmte Daten zu filtern.
GruĂ
Chris
onEdit(e) funktioniert doch auch ohne e also onEdit()
Was sollte das e denn anders machen?
Ist nur sehr verzögert bei mir.
Und arbeitet NUR wenn ich MIN 1 Zeichen/Buchstabe/o.Zahl tippe und ENTER bzw. EINGABE drĂŒcke!
Gibt es da nichts anderes dass z.B. auch auslöst wenn man eine Formatierung anpasst?
Hi Dirk, mit dem e werden weitere Daten ĂŒbertragen die ausgelesen werden können. Das heiĂt, wenn Du also eine Zelle editiert hast, wird die Funktion aufgerufen und mit dem e Daten mit ĂŒbertragen die Du auswerten kannst.
Zum Beispiel um welchen Bereich es sich handelt. Schau Dir dazu mal die API Referenz an:
Google Tabellen Trigger
Noch etwas. Ich habe Dir bereits geschrieben dass ich es nicht schaffe weiterfĂŒhrende Fragen zu beantworten. Das steht bei YouTube in der Kanalinfo und hier muss ich dass wohl auch noch einmal etwas mehr hervorheben. Ich schaffe es nur noch direkt auf Fragen zu den Tutorials zu antworten wenn dort jemand nicht weiter kommt. Bei YouTube war mir das gestern zu viel, vor allem auch wegen der Verlinkung zu anderen Seiten. Hier lasse ich Deine auch groĂen Scripte mit den Fragen erst einmal drin damit sich auch andere damit beschĂ€ftigen können und Dir vielleicht dazu Hilfestellung geben. Ich schaffe das wie gesagt zeitlich nicht und wenn die Frage ĂŒber zu viele Zeilen hinweg gehen dann fange ich erst gar nicht an zu lesen. Das war im vorangegangen Kommentar mit Step by Step gemeint. Kurze Fragen so wie diese lese ich mir durch und kann ich zwischendurch, wenn es die Zeit zulĂ€sst auch mal beantworten. Die Durcharbeitung von einem Script wie den Kommentar den ich gerade von Dir gesehen habe (im Bereich "Daten anderer Tabellen kopieren") werde ich mir heute nicht mehr durchlesen, werde ihn aber fĂŒr andere zum Lesen zumindest freigeben.
HĂ€tte ich keinen Fulltimejob und entsprechend mehr Freizeit dann wĂŒrde es vielleicht anders aussehen.
Viele GrĂŒĂe
Chris
OK Schade!
ff. nur als Kommentar gemeint:
Stepp by Step? z.B. so >warum kann ich nicht (Blatt3,1,26,1,200) so schreiben (Blatt3,A1:X200)? WÀre verstÀndlich???
Der Links (und die anderen erhaltenen) helfen mir nur Ă€usserst begrenzt bis gar nicht wegen den Englisch Kenntnissen und google ĂŒbersetzt keine Formeln oder FachausdrĂŒcke. ABER DANKE! Werd ich mir anschauen.
So ab jetzt nur noch Kommentare direkt zum Tutorial đ
aber eine zu beantworten>
Hilft es dir wenn ich ĂŒberall like? Oder nur als Resonanz die dich froh stimmt? <in dem Fall fĂŒhl dich auf allen Videos geliked! Im Ernst!
Muss mich dann leider auch erst mal ums "schwierige" weiter kommen kĂŒmmern. Werde mich aber bemĂŒhen zumindest die ich mir noch/nochmal ansehe zu liken.
Mach Dir keinen Stress wegen den Likes, wenn Du mal ein Tutorial von mir siehst was Dir gefĂ€llt kannst Du das gerne machen, aber das ist natĂŒrlich kein muss.
Das mit dem Englischen ist natĂŒrlich schwierig und da muss ich mich auch ab und zu durchkĂ€mpfen. Wenn Du einige Script Tutorials von mir gesehen hast, weiĂt Du ja bereits dass ich kein Profi bin sondern eher noch der AnfĂ€nger auch wenn es hier und da vielleicht anders aussieht. Wenn Du Dich ein bisschen eingearbeitet hast, dann wirst Du viele der Funktionen die Du gerne hĂ€ttest komplett selbst erstellen. Auch die Angabe vom Bereich den Du als Beispiel gerade erwĂ€hnt hast. Hier gibt es aber oft auch schon mehrere Varianten. Der Link zur Referenz zeigt Dir genau auf welche Möglichkeiten Dir zur VerfĂŒgung stehen. Wenn Du einen Befehl siehst, dann schaue dort einfach mal nach welche Varianten es davon gibt. Schau Dir einfach mal diesen Link und die danach folgenden Möglichkeiten von getRange an. Damit siehst Du das es schon vieles gibt. Wenn ich eine Frage erhalte mache ich auch nichts anderes als in die Referenz zu schauen ob es eine Möglichkeit gibt:
Referenz zu getRange
Die Recherchen dauern aber immer etwas. Genauso findet man sehr viele Sachen bereits schon im Netz die sehr viel Ăhnlichkeit haben mit Scripten die man vielleicht selbst gerade programmieren möchte. Hier suche ich auch sehr oft und kombiniere das mit anderen Scripten. DafĂŒr stehen diese ja im Netz, damit man nicht alles alleine machen muss. Aus den vielen Scripten kann man auch eine Menge Ideen mitnehmen und sehr viel lernen. Am Besten die kleinen Scripte anschauen, ausprobieren und Ănderungen vornehmen um zu sehen ob es so lĂ€uft wie man sich das vorstellt und auch um zu sehen ob man das richtig verstanden hat. Nach und nach die Projekte erweitern.
Viele GrĂŒĂe
Chris
Google Excel, hallo ich möchte gerne, wenn ich von Spalte (A) im "Datenvaldierungsauswahl" den Eintrag Storno wĂ€hle, soll es den aktuellen Betrag bei Spalte (E), auf null Ă€ndern. Ich habe jetzt sehr lange geĂŒbt und schaffe es einfach nicht. Diese Funktion sollte bei jeder beliebigen spalte (A) funktionieren und der Betrag ist immer auf der Spalte (E). DANKE
Wie sieht denn die Formel aus die Du bisher erstellt hast? Man kann es auch mit einem Script lösen (weil Du hier auf einem Beitrag kommentierst der mit Programmierung zu tun hat) allerdings reicht dafĂŒr die Funktion WENN aus.
Mit der WENN Funktion kannst Du einen Begriff eingeben und ĂŒber weitere Parameter festlegen was passieren soll wenn der Begriff gefunden wird und auch festlegen was passieren soll wenn der Begriff nicht gefunden wird. ZusĂ€tzlich kannst Du auch eine verschachtelte WENN Funktion nutzen falls Du mehrere Begriffe hast die unterschiedliche Berechnungen durchfĂŒhren sollen:
Verschachtelte WENN Funktion fĂŒr Excel:
Verschachtelte WENN Funktion ganz einfach (Excel)
Verschachtelte Arrayformel in Verbindung mit der WENN Funktion:
Arrayformel mit verschachtelter WENN Funktion in Excel
Hallo Chris,
ich will eine Wertentwicklung darstellen. Ich hole mir ĂŒber Googlefinance alle Werte und möchte dann auf einen weiteren Tabellenblatt die Entwicklung darstellen.
Also jeden Abend um 24:00 soll der Wert auf dem neuen Tabellenblatt gespeichert werden. Somit erhalte ich einen Werteverlauf.
Die Werte sollten bestenfalls alle untereinander stehen.
Kannst du mir sagen wie ich das umsetzen kann?
Hallo Chris,
das wĂŒrde mich auch interessieren, aber ich möchte das ganze noch so, dass der WERT A aus TABELLE A in TABELLE B geschrieben wird. Also ungefĂ€hr so:
TABELLE A:
In A1 steht am 01.01.2022 = 3000
In A1 steht am 02.01.2022 = 2850
In A1 steht am 03.01.2022 = 3100 usw.
Ich möchte erreichen, das einmal am Tag diese A1 Zelle ausgelesen wird und in TABELLLE B fortlaufend geschrieben wird, mit Datum
TABELLE B:
A1 = DATUM – B1 = WERT
A2 = 01.01.202 – B2 = 3000
A3 = 02.01.2022 – B3 = 2850
A3 = 03.01.2022 – B4 = 3100 usw.
WÀre schön, wenn Du uns hier einen Ansatz hÀttest.
GruĂ H-BLOGX
Hallo Cris,
danke fĂŒr dein Toptutorial!
Gerne wĂŒrde ich wissen ob man die Funktion auch so anpassen kann, dass man nur eine Zelle auswertet. Also ich lege die Zelle in der ich die Ănderung sehen möchte selber fest. Mir ist leider unklar welche Notation gilt wenn ich "getActiveRange()" einfach durch einen statischen Wert ersetzen möchte.
Konkret hab ich eine Funktion die ein JSON-File auswertet und mir die Zellen beschreibt. Wird der JSON Feed neu ausgewertet verschwinden fĂŒr einige Sekunden alle JSON-Basierte-Werte aus der Tabelle, bis die Auswertung durch ist. Nun wĂŒrde ich gerne eingetragenen Werte solange festhalten, bis die Aktualisierung abgeschlossen ist. Mein Tigger könnte z.B. sein, dass eine Zelle beschrieben ist (z.B. mit dem Counter der Datensets). Die Zellen sind dann eine Art zwischen Speicher. Das modifizierte Skript hĂ€lt den alten Wert also solange in einer Zelle bis die Eingabe abgeschlossen ist.
Danke im Voraus
Hallo ich hoffe mal, dass die Seite weite so toll moderiert wird.
mit
function myFunction() {
var sheet = SpreadsheetApp.getActiveSheet();
var Rango4 = sheet.setActiveCell("d4"); // Temporal
Rango4.setFormula('=SUBSTITUTE(textjoin(",";true;A1:A100);",,";"")');
}
verkette ich die Werte der Zellen A1:A100 und ersetzte dann die doppelten Kommatas
Allerdings habe ich dann in der Zelle auch die Formel stehen
=SUBSTITUTE(textjoin(",";true;A1:A100);",,";"")
Mich interessieren aber ausschliesslich die (Text-)Werte in der Zelle.
Irgendwie komme ich nicht weiter. Hat jemand eine Idee?
Vielen Dank
Peter
Hallo Chris und mit Kommentierer
ich schaue seit Stunden die Videos um mich fortzubilden und verstehe schon einiges, da in Google Tabelle scripten ganz neu.
doch ich komme nicht auf die Lösung meines Problems, leider. Ich möchte gerne zwei Script erstellen das die Zelle ausliest und den enthalten Wert um eins erhöht bei jedem Durchgang oder eben das zweite Script verringert um 1 beim ausfĂŒhren.
könnte mir jemand helfen.
vielen dank im vorraus
viele GrĂŒĂe
Lydia
Hallo Chris und Mitkommentierer
ich schaue seit Stunden die Videos um noch was zu lernen. Doch finde ich nicht die Lösung fĂŒr mein Problem ich möchte gerne zwei Scripts schreiben, das eine soll bei DurchfĂŒhrung die Zelle auslesen und um 1 erhöhen und das andere soll den wert um 1 senken.
kann mir jemand helfen?
vielen Dank im vorraus
viele GrĂŒĂe
Lydia
Hallo Chris und hallo an alle Interessierten hier.
Chris, Deine Tutorials haben mir schon sehr viel beigebracht und ich habe auch sehr viel umgesetzt. Nun stoĂe ich bei einem Thema an meine Grenzen.
Als Ehrenamtler in einem Verein stelle ich unseren Busfahrern eine Tabelle zur VerfĂŒgung, in der sich jeder fĂŒr einen bestimmten Tag und Uhrzeit fĂŒr einen Fahrdienst eintragen kann. Es handelt sich ĂŒberwiegen um Leute, die mit IT nicht auf Du und Du sind. Soweit klappt alles sehr gut, aber es kommt immer wieder vor, dass jemand aus Versehen ein neues Tabellenblatt anlegt. Das sollte jedoch nicht passieren und nun meine Frage: Wie kann ich das verhindern?
Ich hatte vermutet, dass es zum Objekt "Spreadsheet' eine Methode gibt, mit der man das HinzufĂŒgen von neuen TabellenblĂ€ttern verhindern kann.
Hast Du Chris eine Lösung, oder hat jemand anderes hier dazu etwas Hilfreiches?
vielen Dank im voraus.
liebe GrĂŒĂe
Werner
Hi Chris, gibt es die Möglichkeit onEdit so einzusetzen das es angesprochen wird wenn ich eine bestimmte Zelle Àndere ? MfG
Hallo,
sehr interessant und hilfreich was du hier so veröffentlichst. DafĂŒr erstmal ein dickes Danke.
ich bin dabei deine Funktion auf meinen Bedarf abzuÀndern.
Ich möchte mit Hilfe einer generierten SchaltflÀche die aktive Zelle um den Wert 1 erhöhen.
Mit -1 Funktioniert es, mit +1 wird der Wert der aktiven Zelle auch um 1 reduziert.
Wo ist mein Gedankenfehler? (Habe die Zelle zur Anzeige der Positionen an 2 feste Stellen gesetzt.)
Hier der Code fĂŒr +1:
// Funktion die bei einer Ănderung aufgerufen wird.
function onEdit(e){
// ruft die Hauptfunktion auf
infosAktiveZelle();
}
// Hauptfunktion
function infosAktiveZelle(){
// zuweisen der aktuellen Position in die Variable aktivePosition
var aktivePosition=SpreadsheetApp.getActiveRange().getA1Notation();
// zuweisen des Wertes von der aktuellen Position in die Variable aktivePositionWert
var aktivePositionWert=SpreadsheetApp.getActiveRange().getValue();
// Ausgabe der aktuellen Position in Zelle A2
SpreadsheetApp.getActiveSheet().getRange("I12").setValue(aktivePosition);
// Ausgabe des Wertes der aktuellen Position in Zelle B2
SpreadsheetApp.getActiveSheet().getRange(aktivePosition).setValue((aktivePositionWert)+1);
}
Und hier fĂŒr -1:
// Funktion die bei einer Ănderung aufgerufen wird.
function onEditb(e){
// ruft die Hauptfunktion auf
infosAktiveZelle();
}
// Hauptfunktion
function infosAktiveZelle(){
// zuweisen der aktuellen Position in die Variable aktivePosition
var aktivePosition=SpreadsheetApp.getActiveRange().getA1Notation();
// zuweisen des Wertes von der aktuellen Position in die Variable aktivePositionWert
var aktivePositionWert=SpreadsheetApp.getActiveRange().getValue();
// Ausgabe der aktuellen Position in Zelle A2
SpreadsheetApp.getActiveSheet().getRange("J12").setValue(aktivePosition);
// Ausgabe des Wertes der aktuellen Position in Zelle B2
SpreadsheetApp.getActiveSheet().getRange(aktivePosition).setValue((aktivePositionWert)-1);
}
Ăber eine RĂŒckmeldung wĂŒrde ich mich freuen.
LG Heini
So, nach Sicht des Videos habe ich den Fehler selbst entdeckt und behoben.
So funktioniert es jetzt:
+1
// Hauptfunktion
function infosAktiveZelle(){
// zuweisen der aktuellen Position in die Variable aktivePosition
var aktivePosition=SpreadsheetApp.getActiveRange().getA1Notation();
// zuweisen des Wertes von der aktuellen Position in die Variable aktivePositionWert
var aktivePositionWert=SpreadsheetApp.getActiveRange().getValue();
// Ausgabe der aktuellen Position in Zelle A2
SpreadsheetApp.getActiveSheet().getRange("J11").setValue(aktivePosition);
// Ausgabe des Wertes der aktuellen Position in Zelle B2
SpreadsheetApp.getActiveSheet().getRange(aktivePosition).setValue((aktivePositionWert)+1);
}
-1
// Hauptfunktion
function infosAktiveZelle2(){
// zuweisen der aktuellen Position in die Variable aktivePosition
var aktivePosition=SpreadsheetApp.getActiveRange().getA1Notation();
// zuweisen des Wertes von der aktuellen Position in die Variable aktivePositionWert
var aktivePositionWert=SpreadsheetApp.getActiveRange().getValue();
// Ausgabe der aktuellen Position in Zelle A2
SpreadsheetApp.getActiveSheet().getRange("J12").setValue(aktivePosition);
// Ausgabe des Wertes der aktuellen Position in Zelle B2
SpreadsheetApp.getActiveSheet().getRange(aktivePosition).setValue((aktivePositionWert)-1);
}
Danke fĂŒr deine hilfreichen Tutorials!!
Super, freut mich dass Du den Fehler selbst beheben konntest. Leider fehlt mir die Zeit, sonst wĂŒrde ich natĂŒrlich gerne wieder mehr im Bereich Programmierung machen und hĂ€tte dann auch mal diesen Code getestet.
Viele GrĂŒĂe
Chris
Hallo Chris, kein Problem. Bei mir funktioniert es wie gewollt. Die Funktion On Edit war das Problem. Nach deiner ErklĂ€rung im Video dazu, war mir klar, dass ich die rausschmeiĂen muss. LĂ€uft, danke.