Antworten auf deine Fragen:
Neues Thema erstellen

Erledigt - Google Tabelle Kalender-Skript [Gelöst]

mkuz24

Noch nicht viel geschrieben

Guten Tag zusammen,

ich lerne ganz frisch Google Tabellen Skripte zu schreiben.
Ich habe mit einem Skript mir die Termine aus meinen Kalender in die Tabelle einfügen lassen, dies funktioniert so weit gut.
Die Tabelle/Skript soll jetzt so weit erweitert werden, dass sobald ein bestimmtes Wort in der Beschreibung steht z.B. Urlaub in eine Zelle ausgegeben wird.
Problem:
In der Beschreibung im Kalender steht nicht immer nur ein Wort, manchmal auch mehrere, die jedoch mit einem ; getrennt sind.

Zelle A30 Tabellen Funktion: =IF(C3="Urlaub"; "Urlaub"; "kein Urlaub")
Es wird immer "kein Urlaub" ausgegeben, auch wenn in der betroffenen Zelle (C3) nur "Urlaub" steht und kein anderes, in den anderen Zeilen (C2:C100) steht manchmal auch z.B. "Einkaufen; Urlaub" oder "Arzttermin; Urlaub; AU".

Skript Code:

var now=new Date();

// Startzeit
var startpoint=new Date(now.getTime()-60*60*24*1000*1000);
// Endzeit
var endpoint=new Date(now.getTime()+60*60*24*100*1000);

var events=CalendarApp.getCalendarById("Kaleder_ID").getEvents(startpoint, endpoint);

var ss=SpreadsheetApp.getActiveSpreadsheet().getSheetByName("meineTermine");

ss.clear();

ss.getRange("A1").setValue("Kalender übersicht");
ss.getRange("A2").setValue("Wo war ich:"); //Ausgabe: Zeile 1 Spalte 1 Titel
ss.getRange("B2").setValue("Datum:"); // Ausgabe: Zeile 1 Spalte 3 Datum:
ss.getRange("C2").setValue("Beschreibung:"); //Ausgabe: Zeile 1 Spalte 2 Beschreibung:
ss.getRange("D2").setValue("Adresse:"); // Ausgabe: Zeile 1 Spalte 4 Adresse:
ss.getRange("E2").setValue("Urlaub"); //Augabe: E2

for (var i=0;i<events.length;i++)
{


ss.getRange(i+3,1).setValue(events.getTitle()); // Wert aus Kalneder Titel ausgabe.
ss.getRange(i+3,2).setValue(events.getStartTime()); // Wert aus Datum ausgabe
ss.getRange(i+3,3).setValue(events.getDescription()); // Wert aus Beschreibung ausgabe.
ss.getRange(i+3,4).setValue(events.getLocation()); // Wert aus Adresse


// Hier komm ich nicht mehr weiter. ich finde keine Erklärung, ob man eine Abfrage erstellen kann, ob Zelle X den Wert hat oder ob man ein Wort in den //Zellen suchen kann, um dann wo anders "Urlaub" ausgeben zu können.
//Da ich nicht weiter kam, ab ich auch die zusammen gewürfelten Befehle hier wieder entfernt, da eh nur Fehlermeldungen erschienen sind.
}
}

Kann mir jemand erklären was ich im Skript oder in der Tabellen Formel anpassen muss?
 

Excel

owieortho

Aktives Mitglied

Moin,

vorab: mit Google Sheets habe ich keine Erfahrung. Dafür umso mehr in Excel. Vielleicht gibt es in Sheets ein Äquivalent.

Ich würde mit der Funktion "FINDEN" die Zeichenfolge "Urlaub" in der Eingabezelle suchen lassen. Bei einem Treffer, sprich Vorhandensein des Suchwortes, allein oder im Gemenge, wird die Position des ersten Buchstabens des Suchwortes ("U") als Zahl ausgegeben, andernfalls ein Fehler. Mit einem entsprechenden WENN-Konstrukt (ISTZAHL, ISTFEHLER) lässt sich dann eine Ausgabe oder eine bedingte Formatierung triggern.

Vielleicht ist das eine Anregung. Viel Erfolg
O.
 

mkuz24

Noch nicht viel geschrieben

Moin,

vorab: mit Google Sheets habe ich keine Erfahrung. Dafür umso mehr in Excel. Vielleicht gibt es in Sheets ein Äquivalent.

Ich würde mit der Funktion "FINDEN" die Zeichenfolge "Urlaub" in der Eingabezelle suchen lassen. Bei einem Treffer, sprich Vorhandensein des Suchwortes, allein oder im Gemenge, wird die Position des ersten Buchstabens des Suchwortes ("U") als Zahl ausgegeben, andernfalls ein Fehler. Mit einem entsprechenden WENN-Konstrukt (ISTZAHL, ISTFEHLER) lässt sich dann eine Ausgabe oder eine bedingte Formatierung triggern.

Vielleicht ist das eine Anregung. Viel Erfolg
O.

Guten Morgen Owieortho,

dies ist eine gute Idee.
Ich versuche es in einem Skript einzubauen, leider bekomm ich die for Schleife nicht hin, irgendwie finde ich den passenden Syntax nicht.
In Excel würde das dann so aussehen:

=WENN(ISTFEHLER(SUCHEN("Urlaub"; C3)>0; "kein Urlaub" ; "Urlaub"))

An und für sich funktioniert die Formel auch.
Ich möchte das diese Formel automatisch mit jedem Eintrag mit runter geht (C3, C4, C4,...) so lange, wie die Daten eingetragen werden. Ein manuelles einfügen der Formel möchte ich meiden.

Im Skript sieht das so aus, aber da kenne ich den Syntax nicht und ich befürchte, wenn ich das so eingebe, dass die Tabelle es nicht als Funktion sieht, sondern als Text. Dies wäre dann auch doof.

ss.getRange(i+3,5).setValue(" \"=WENN(ISTFEHLER(SUCHEN(\"Urlaub\" ";" " \"C\""3+i " )>0) ; " \"Falsch\" ";" \"Urlaub\" ")" \" ") ;
 
Zuletzt bearbeitet:

owieortho

Aktives Mitglied



Google sheets kann ja Excel-Dateien importieren. Vielleicht übernimmt es ja dabei auch die hinterlegten Funktionen und ersetzt sie durch die entsprechenden eigenen...

O.
 

mkuz24

Noch nicht viel geschrieben

Die Funktion =WENN(ISTFEHLER(SUCHEN("Urlaub";C3)>0);"--";"Urlaub") läuft ja richtig.
Das Problem ist, wenn ich das Skript starte wird der Inhalt der Zelle gelöscht und die Funktion wird aus der Zelle entfernt.

Mein Gedanke ist, dass ich diese Funktion in den Skript einfüge, damit es dann automatisch in der for-Schleife mit ausgegeben wird.

Problem ist:
Ich weiß nicht genau, wie ich die Code Zeile schreiben soll damit die Funktion läuft.
setValue("=WENN(ISTFEHLER(SUCHEN("Urlaub";C3)>0);"--";"Urlaub")"); <-- ist der Syntax falsch und C3 müsste noch hoch gezählt werden (C3, C4, C....)

Dies hab ich mit einer Schleife versucht.

for( var i=0; i<events.length;i++)
{
...
setValue('=WENN(ISTFEHLER(SUCHEN("Urlaub; C'.i+3.'>0);"--"; "Urlaub")"); //<--- das klappt so nicht
...
}
 

mkuz24

Noch nicht viel geschrieben

Ich hab jetzt einen Tipp bekommen getFormular() zu nutzten und es funktioniert zu 99% jetzt, jetzt muss nur noch die Zelle C hoch gezählt werden :)
 

mkuz24

Noch nicht viel geschrieben

[Gelöst]

Ich habe zuerst deutsche Wörter in den Formeln benutzt, jedoch erlaubt mir das Skript nur die Englischen Wörter, also hab ich alles ins Englische geändert und schon läuft der Code :)

Skript:
ss.getRange(i+3,5).setFormula('=WENN(ISTFEHLER(SUCHEN("TEXT"; C'+[i+3]+') >0); "NIX"; "TEXT")');

ss.getrange(i+3,5).setFormula('=IF(ISERR(SEARCH("TEXT"; C'+[i+3]+')>0); "NIX"; "TEXT")); // so läuft das nun auch
 
Zuletzt bearbeitet:
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.593
Beiträge
1.538.225
Mitglieder
67.511
Neuestes Mitglied
KaDe63
Oben