0

Ich versuche, eine benutzerdefinierte Trigger-Funktion, die auf Bearbeiten ausgelöst wird. Mein Ziel ist es, zu verfolgen, wenn ein bestimmter Bereich eines Blattes verändert oder hinzugefügt wird, und dieses in einem anderen Blatt einzufangen, indem ein String in einer bestimmten Zelle hinzugefügt wird. Diese Update-Markierung muss in Spalte I stehen und die Zeile mit der Referenz auf die ID der modifizierten Zelle schneiden.Google Blatt-Skript gibt mir "Fehler beim Hinzufügen oder Ändern von Eigenschaften von Objekten". Ich vermute, getRange related Problem

Jetzt, wenn ich versuche, es auszuführen, gibt es mir diesen Fehler, aber es hat keine weitere Erklärung, so habe ich keine Ahnung, wie weiter zu gehen. Können Sie mir bitte helfen? Dies ist mein Code:

function onEdit() { 
 
    var ss = SpreadsheetApp.getActive(); 
 
    var e = ss.getActiveSheet() 
 
    var ecell= e.getActiveCell() 
 
    var allsheets = ss.getSheets(); 
 
    var version = "0.4.0"; 
 
    //Making sure that whatever was updated it is not in the first 5 columns nor in the first 2 rows 
 
    if (e.columnStart < 5 || e.rowStart < 2 || e.getSheetName() =="0.4.0") return; 
 
    //Trying to get hlook pointing to the F2 cell 
 
    var hlook= e.getRange('F2'); 
 
    // Want to set up a formula in F2 so that I can get de location of the index (manual ID) value of ecell 
 
    hlook.setFormula="HLOOKUP(ecell, 'A'+ ROW(ecell) + ':' + 'Q' + ROW(ecell),3)"; 
 
    // Want to retrieve the value returned from the formula 
 
    var eid=hlook.getActiveCell().getValue(); 
 
    //Navigting all available sheets to set up updates 
 
    for (var s in allsheets){ 
 
    var sheet=allsheets[s]; 
 
    // Dismissing the master sheet 
 
    if (sheet.getSheetName()!="0.4.0") 
 
    { 
 
    //Assigning a variable to AA1 (or even further, whith is fine) 
 
    var con=e.getRange(1,28); 
 
    //Setting up a formula 
 
    con.setFormula="IFERROR(VLOOKUP(eid, 'C1:C35',1), false)"; 
 
    // Retrieving formula result 
 
    var control=con.getActiveCell().getValue(); 
 
    if (control!=false) 
 
    { 
 
     //If the value I am looking for actually existws on this sheet, enter update stamp at column I on the row where the value was found 
 
     var ro=VLOOKUP(eid, "C1:C350",1); 
 
     var cel="I" + ro; 
 
     cel.setValue(version) 
 
     } 
 
    } 
 
    } 
 
}

Antwort

0

Deshalb glaube ich, das Problem in Ihrem .setFormula ist. Wenn Sie .setFormula = "... formula ..." eingeben; Das Skript denkt, dass Sie das Objekt 'setFormula' bearbeiten möchten. In der Tat wollen Sie die Aktion tun, setFormula, so sollten Sie wie folgt formatiert:

hlook.setFormula("...formula..."); 

Die andere Sache, die Sie an Ihre Formeln aussehen wollen würde. Sie werden feststellen, dass google sheets einmal auf dem Blatt nicht wissen, was ecell ist. Die A1-Notation von Ecell kann mit in Ihre Ecell Variable gepackt werden:

var ecell = e.getActiveCell().getA1Notation(); 

Dann können Sie diese in Ihre Formel ersetzen etwa so:

hlook.setFormula("HLOOKUP(" + ecell + ", 'A'+ ROW(" + ecell + ") + ':' + 'Q' + ROW(" + ecell + "),3)"); 

ich gerade da, wo ich kommentiert Ihren Code ändern in auf diese Weise, um es zu korrigieren:

function onEdit() { 
    var ss = SpreadsheetApp.getActive(); 
    var e = ss.getActiveSheet(); 
    var ecell= e.getActiveCell().getA1Notation(); 
    var allsheets = ss.getSheets(); 
    var version = "0.4.0"; 
    //Making sure that whatever was updated it is not in the first 5 columns nor in the first 2 rows 

ÄNDERN HIER - if-Anweisung Bedürfnisse {}, Format, wenn (Erklärung) {Aktion} so geschweiften Klammern um {return;}

if (e.columnStart < 5 || e.rowStart < 2 || e.getSheetName() =="0.4.0") return; //why not use version variable here? 

    //Trying to get hlook pointing to the F2 cell 
    var hlook= e.getRange('F2'); 
    // Want to set up a formula in F2 so that I can get de location of the index (manual ID) value of ecell 

MODIFY SETFORMULA();

hlook.setFormula="HLOOKUP(ecell, 'A'+ ROW(ecell) + ':' + 'Q' + ROW(ecell),3)"; 
    // Want to retrieve the value returned from the formula 

MODIFY SCRIPT - möchten Sie den Wert hlook, so

var eid = hlook.getValue(); 
******************************* 
    var eid=hlook.getActiveCell().getValue(); 
    //Navigting all available sheets to set up updates 
    for (var s in allsheets){ 
    var sheet=allsheets[s]; 
    // Dismissing the master sheet 
    if (sheet.getSheetName()!="0.4.0") 
    { 
    //Assigning a variable to AA1 (or even further, whith is fine) 
    var con=e.getRange(1,28); 
    //Setting up a formula 

MODIFY setFormula();

 con.setFormula="IFERROR(VLOOKUP(eid, 'C1:C35',1), false)"; 
    // Retrieving formula result 
    var control=con.getActiveCell().getValue(); 
    if (control!=false) 
    { 
     //If the value I am looking for actually existws on this sheet, enter update stamp at column I on the row where the value was found 

HIER VERÄNDERN -

var ro = "VLOOKUP(" + eid + ", "C1:C350",1)"; 
******************************* 

     var ro=VLOOKUP(eid, "C1:C350",1); 
     var cel="I" + ro; 
     cel.setValue(version) 
     } 
    } 
    } 
} 

Hoffentlich mit diesen Änderungen wird es funktionieren, aber wenn Sie Fehler erhalten informieren Sie mich bitte ich noch einen Blick :) Viel Glück haben werden

+0

Danke für Deine Zeit und die Vorschläge! Ich habe es versucht, aber ich denke, ich kann keiner Zelle irgendeinen Wert zuweisen, also bis ich herausfinde, warum kann ich nicht, dieses Projekt ist in der Warteschleife :( –

+0

Könnten Sie möglicherweise Ihren neuesten Code als Bearbeitung? I Ich würde mich freuen, noch einmal durchzusehen und möglicherweise versuchen, Ihr Problem zu replizieren. Ich bin mir nicht sicher, was Sie seit dem letzten Mal geändert haben könnten. – David

Verwandte Themen