Frage

Mein Skript ist in einem Google-Tabelle Dokument Hier ist mein Skript:

ss = SpreadsheetApp.getActiveSpreadsheet ();

function onOpen() {
 var ss = SpreadsheetApp.getActiveSpreadsheet();
  var menuEntries = [ {name: "10 Rows", functionName: "TenRows"},
                      {name: "20 Rows", functionName: "TwentyRows"},
                      {name: "30 Rows", functionName: "ThirtyRows"},
                      {name: "40 Rows", functionName: "FortyRows"},
                      {name: "50 Rows", functionName: "FiftyRows"}]                      
   ss.addMenu("Insert Rows", menuEntries);
 }


 function TenRows() {
  SpreadsheetApp.getActiveSheet().insertRowsBefore(2,10);
 }

 function TwentyRows() {
  SpreadsheetApp.getActiveSheet().insertRowsBefore(2,20);
 }

 function ThirtyRows() {
  SpreadsheetApp.getActiveSheet().insertRowsBefore(2,30);
 }

 function FortyRows() {
  SpreadsheetApp.getActiveSheet().insertRowsBefore(2,40);
 }

 function FiftyRows() {
  SpreadsheetApp.getActiveSheet().insertRowsBefore(2,50);
 }

In der Spalte C von meiner Tabelle habe ich eine Reihe von Zahlen jede Zeile hinunter.

Wie diese

 C
7317
7316
7315
7314
7313

Wenn ich meinen Skript ausführen eine Reihe von Zeilen einzufügen, Wie kann ich es machen, so dass es diese aufsteigende Zahl und Eingaben automatisch weiter in die C-Säule?

Danke

War es hilfreich?

Lösung

Ich kann natürlich nicht geben Sie den Code ohne das Ganze zu sehen, aber ich kann Ihnen Ratschläge geben, wie man es lösen:

  1. Bevor die neuen Zeilen eingefügt, Speichern der Nummer, die in der Reihe war, nach der die neuen eingefügt wird, in eine Variable z.B. lastNumber = parseInt(insertRowColumnC.getValue()) stellen Sie sicher, zu verwenden parseInt die Zeichenfolge in eine Zahl zu konvertieren (!)
  2. Legen Sie die neuen Zeilen
  3. Jetzt Iterierte über alle neu eingefügten Zeilen von oben nach unten
  4. Auf jeder Zeile, die Sie erste Abnahme lastNumber nach dem anderen, und dann den Wert in Spalte C schreiben auf dieser Zeile

Aktualisieren

Nach einem Blick auf die Tabelle, die hatte ich ein paar Minuten verbracht und kam mit diesem Stück Code auf:

function onEdit(e) {
  var sheet = e.source.getActiveSheet();
  var r = e.source.getActiveRange();
  if (r.getColumn() == 3 && r.getRow() == 2) {
    var value = parseInt(r.getValue());
    if (!isNaN(value)) {
      var next = getFirstRowNumber(sheet);
      if (value > next) {
        var count = value - next;
        sheet.insertRowsAfter(2, count);
        for(var i = 2; i < 2 + count; i++) {
          sheet.getRange(i + 1, 3).setValue(value);
          value--;
        }
        r.setValue('');

      } else {
         r.setValue('');
         Browser.msgBox('You need to enter a greater ID.');
      }
    } else if (r.getValue() !== '') {
      r.setValue('');
      Browser.msgBox('You need to enter a valid ID.');
    }
  }
}

war Ihre Frage ein wenig unklar, aber das funktioniert, wie Sie es wollen.

Wenn einige Einsätze eine neue ID in 2 / C, die fehlenden IDs bewteen die neue ID und die ID in 3 / C automatisch eingefügt werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top