1

Ich habe das folgende Skript geschrieben, sodass Sheets automatisch eine neue Zeile einfügt und eine Formel in diese neue Zeile kopiert.Google Tabellen - Hinzufügen neuer Zeilen nach dem ersten Bearbeiten der angegebenen Spalten/Datenüberprüfung

Ich habe angegeben, dass ich möchte, dass diese Funktion nur ausgeführt wird, wenn Änderungen an Spalten 2 oder 4 vorgenommen werden, das Skript jedoch unabhängig von der Spaltennummer ausgeführt wird oder ob e.oldValue === undefined ist oder nicht.

Zwei Fragen:

1) Was ist mit meinem Code falsch ist, dass es die Spaltennummer und die Datenvalidierung ignoriert?

2) Wenn ein Wert in eine Zelle eingegeben und gelöscht wird, wird diese Zelle wieder auf undefiniert oder ist ihr Wert jetzt ""? Hier

ist ein Link zu dem Blatt: https://docs.google.com/spreadsheets/d/1m58J7vg_xfkrxK_9pxPSHAlBYULXbqNIiF8H2-KVBgE/edit#gid=1496977189

Code:

function onEdit(e) { 

    var sheet = SpreadsheetApp.getActiveSheet(); 
    var activeCell = sheet.getActiveCell(); 
    var activeColumn = activeCell.getColumn(); 
    var walkoutRange = sheet.getRange(7, 17, 1); 
    var walkoutFormula = walkoutRange.getFormulas(); 
    Logger.log(walkoutFormula); 
    var newRange = sheet.getRange((activeCell.getRow() + 1), 17, 1) 

    if (sheet.getName() != "Form") { 

    if (activeColumn === 2 || 4) { 

     if (e.oldValue === undefined) { 

     sheet.insertRowAfter(activeCell.getRow()); 
     newRange.setFormula(walkoutFormula); 
     } 
    } 
    } 
}; 

Antwort

0

Es gibt einen nicht erfasste Fehler in der folgenden Zeile:

if (activeColumn === 2 || 4) { 

werden soll:

if (activeColumn === 2 || activeColumn === 4) { 

Die bedingte Test:

activeColumn === 2 || 4 

Ist immer true Rückkehr;

function test() { 
    var activeColumn = 9; 
    Logger.log('is it true: ' + Boolean(activeColumn === 2 || 4))//returns true 

    if (activeColumn === 2 || 4) { 
    Logger.log(Boolean(activeColumn === 2 || 4)) 
    }; 

}; 
+0

Vielen Dank für die Hilfe! – thehamburglar

Verwandte Themen