Script Kids hier ?? Google Tabellen

  • Moin .


    ich bastele mir gerade mal wieder ein Problem :D


    Google Tabelle .

    In den Zellen E8 bis E160 stehen Werte . (Bzw ist es eigentlich ne Simple, sich wiederholende Zahlenreihe.... 1- 75, nur das zw. 49 und 50 noch ne 49a ist)


    Diese sollen täglich um 0 Uhr um zwei Zeilen nach oben geschoben werden, bzw die obersten dann wieder unten dran .


    Geht so etwas ? (und wenn das geht, habe ich sicher ein neues Problem :D )

    Mein Lieblingsplatz ist ganz dünnes Eis ........

  • Würde ev. mal damit ansetzen ulridos :

    google sheets script conditionally move row to another spreadsheet
    I am new to this and I am having some trouble trying to figure this out. I have a spreadsheet that collects data from a google form. I am trying to find a way…
    stackoverflow.com

  • macht aber nicht so ganz was ich will


    function zellenbereichVerschieben(){
    var sheet=SpreadsheetApp.getActiveSheet();
    var source="E9:E160";
    var destination="H9";
    Utilities.sleep(20000);
    var source="H11:H160";
    var destination="E9";
    var source="H9:H10";
    var destination="E159";
    sheet.getRange(source).moveTo(sheet.getRange(destination));


    Wenn ich die Zeilen 5-9 weglasse macht es den ersten Teil dessen was ich möchte .


    Aber mit dem zweiten Teil des Script habert es . Geht das nicht in einem Rutsch ?

    Muss dafür ein 2. Script her ? (Wäre blöde, da Google Trigger nur stündlich zulässt)


    Morgen mal weiter grübeln :D

    Mein Lieblingsplatz ist ganz dünnes Eis ........

  • Ich würde ohne es zu testen eher sowas behaupten ulridos :

    Keine Ahnung ob Tables die While-Schlaufe so unterstützt.

    Aber prinzipiell musst Du das moveTo nach jeder Zuweisung der Variablen ausführen, sonst überschreibst Du nur drei Mal die Variablen.


    Dein Skript macht:

    - Hole Tabelle in sheet

    - Setze beide Variablen neu
    - Schlafe 20k Sekunden

    - Setze beide Variablen neu

    - Setze beide Variablen neu

    - Verschiebe die Zellen in den Variablen (Werte welche beim 3. Mal gespeichert wurden)

  • ha .... Danke :)

    Das ich die nach jeder Anweisung ausführen muss ist genau der Punkt.


    function zellenbereichVerschieben(){
    var sheet=SpreadsheetApp.getActiveSheet();
    var source="E9:E160";
    var destination="H9";
    sheet.getRange(source).moveTo(sheet.getRange(destination));
    var sheet=SpreadsheetApp.getActiveSheet();
    var source="H9:H10";
    var destination="E159";
    sheet.getRange(source).moveTo(sheet.getRange(destination));
    var source="H11:H160";
    var destination="E9";
    sheet.getRange(source).moveTo(sheet.getRange(destination));
    }


    funzt.


    Die Pause war n Versuch, ob da was zeitkritisch läuft, kann auch weg,



    Dann gehts ans nächste Problem :D

    Mein Lieblingsplatz ist ganz dünnes Eis ........

  • Mal ne kurze Erklärung.


    Es geht um einen Reinigungsplan .


    Es wird jede Woche Mo und Fr gereinigt


    In Zelle I1 steht aktuelles Datum =HEUTE()


    Spalte A Fülle ich mit Jahreszahl

    =JAHR($I$1-0) (für weitere Wochen hinten das -0 fortlaufend jede 2. Zeile +1)


    Spalte B fülle ich mit KW

    =KALENDERWOCHE($I$1+0*7;21) (die 0 dann auch weiter mit +1 jede 2.Zeile)

    (Jede 2. Zeile, weil ein Montag und ein Freitag derselben Woche erstellt wird)


    Spalte E fülle ich dann händisch mit den Gartennummern. Problem hier ist, keine fortlaufende Nummerierung. An einigen Stellen gibts zur Nummer noch n Index (z. B. 49a), sonst hätte man da auch mit der Datumsfunktion was basteln können.


    Spalte F fülle ich dann mit MontagsDatum für die entsprechende KW

    =DATUM(Axx;1;7*Bxx-3-WOCHENTAG(DATUM(Axx;;);3))

    bzw. für Freitag :

    =DATUM(Axx;1;7*Bxx+1-WOCHENTAG(DATUM(Axx;;);3))


    Das ganze sorgt so weit dafür, dass ich einen weit voraus laufenden Reinigungsplan erstellen kann, der sich automatisch aktualisiert und einfach in eine Webseite eingebettet werden kann.


    Obiges Script brauche ich für die händisch erstellte Spalte E Gartennummer. Das wird montags nach 0 Uhr getriggert und die Spalte springt 2 Zeilen nach oben, wie auch der Rest über die Datumsfunktion (weil ne neue Woche beginnt)


    Mann lernt ja gern immer dazu, :) also hab ich das mal gemacht. Wird man nicht dümmer und hält Hirn auf Trab.

    ----------------------------------------------------------------------------------------------------------


    So.... nun der nächste Schritt :D


    In den KW 45 bis 9 wird nur freitags gereinigt. Da läuft obiges Ding ins Leere.


    Idee nun :


    Spalte F wird geleert, kein Datum mehr da. Funktionen auch weg.


    Unter der letzten Zeile von Spalte F erzeuge ich nach obigen Muster das Datum der dem der eigentlichen Tabelle folgenden Woche ... Mo .... und Fr


    Dann beziehe ich diesen Zellbereich mit in obiges Script ein. Dann würde sich die Spalte F von Woche zu Woche von unten füllen (hoffe ich) (Für den Erststart kann ich oben händisch füllen)


    Damit bekomme ich den Montag in KW 45 bis 9 noch nicht weg.

    Daher brauche ich nun eine Funktion, die das erzeugte Datum löscht, wenn es in KW<9 oder KW>44 liegt und ein Montag ist.


    Und wenn die gelöscht wurde, muss die nächste Datumszeile unter F erstellt werden, da das Script ja 2 Zeilen verschiebt und ich so Leerzellen und dadurch Verschiebungen hätte.



    Lösungsideen ?

    Mein Lieblingsplatz ist ganz dünnes Eis ........