2017-01-14 3 views
0

Ich habe ein einfaches Google Script, ich versuche zu arbeiten, aber ich kann meinen Fehler nicht verstehen.Cell-Wert in eine andere Zelle in derselben Tabelle verschieben

Die Funktion möchte Text, der nicht fett ist, von einem Abschnitt des Arbeitsblatts in einen anderen verschieben, nachdem eine leere Zelle gefunden wurde.

Ich habe überprüft, I-Werte bekommen, wenn die Werte fett gewichtet sind oder nicht fett, und die Position der leeren Zelle, aber wenn ich versuche, den Text, den ich diese Fehlermeldung zu verschieben:

TypeError: Cannot find function copyTo in object AS.

ich kenne meine Fehler aus dieser Linie ist:

matchedCell.getValue().copyTo((emptyCellLocation,1,1,1),{contentsOnly:true}); 

Verbesserungsvorschläge?

function moveLowerValues() { 

    var s = SpreadsheetApp.getActiveSheet(); 

    // Set values for position of cells to examine 

    var upperRowStart = 1; 
    var columnStart = 1; 

    var upperRange = s.getRange(upperRowStart, columnStart, 10); 

    var upperValues = upperRange.getValues(); // Get all data in one call 
    var emptyCellLocation = 1; 

    while (upperValues[emptyCellLocation][0] != "") { 
    emptyCellLocation++; 
    } 

    var lowerRowStart = 11; 
    var lowerRange = s.getRange(lowerRowStart, columnStart, 10); 

    var lowerValues = lowerRange.getValues(); 

    var lowerWeight = lowerRange.getFontWeights(); 

    // Move and clear cells which are not bold 

    for (var rowStartOffset=0; rowStartOffset < lowerValues.length; rowStartOffset++) { 

    // If the value of the cell does not equal bold, move and then delete it 

    if (lowerWeight[rowStartOffset].toString() != "bold") { 

     var matchedRow = lowerRowStart + rowStartOffset; 
     var matchedCell = s.getRange(matchedRow, columnStart, 1, 1); 
     matchedCell.getValue().copyTo((emptyCellLocation,1,1,1),{contentsOnly:true}); 
     // emptyCellLocation++ 
     // matchedCell.clear(); 

    } 
    } 

    // lowerRange.sort(1); 

} 

Antwort

1

matchedCell.getValue() gibt den Wert in dieser Zelle: eine Zahl, eine Zeichenfolge, oder so etwas. Dieser Wert hat keine Methode copyTo. Diese Methode hat ein Range-Objekt. Verwenden Sie stattdessen matchedCell.copyTo.

Darüber hinaus muss das erste Argument von copyTo auch ein Objekt der Range-Klasse sein. Schreiben (emptyCellLocation,1,1,1) erstellt ein solches Objekt nicht. Verwenden Sie die getRange Methode.

+0

Das war mein Fehler. Vielen Dank! – Chef1075

Verwandte Themen