Ich arbeite mit etwas Code, der einen vordefinierten Bereich nimmt und Daten auf ein Blatt mit dem gleichen Namen wie in Spalte A kopiert. Das Problem, in dem ich bin, ist, wenn Spalte A hat eine leere Zelle, die benötigt wird, dann bekomme ich einen Fehler, in dem es meldet, dass "Methode getRange" von null nicht aufgerufen werden kann. Wenn Daten in dieser Zelle sind, dann funktioniert es perfekt.Wenn Zelle leer ist, überspringen Sie und gehen Sie zum nächsten
Einige Dinge, die ich ausprobiert habe, sind die Filterung des Bereichs, der Code liest jedoch immer noch den Bereich, obwohl er ausgeblendet ist. Ich habe auch versucht, eine if/then-Anweisung zu schreiben, war aber nicht erfolgreich.
I have a sample Google Sheet ready to go here to illustrate the blank space.
Hier ist ein Screenshot der leeren Zelle ich mich beziehe:
-Code im Einsatz:
var ss=SpreadsheetApp.getActiveSpreadsheet();
var master = ss.getSheetByName('Home');
var colWidth = master.getLastColumn();// last used col in masterSheet
var sheets = ss.getSheets();// number of sheets
var editRange = 'B2:B15';
function onOpen() {
var menuEntries = [ {name: "Copy selected Rows to sheets", functionName: "copyRowsOnConditionV2"},
];
ss.addMenu("Copy functions",menuEntries);// custom menu
}
function copyRowsOnConditionV2() {
var sheetNames = [];// array of existing sheet names
var sheets = ss.getSheets();// number of sheets
for(s=0;s<sheets.length;++s){sheetNames.push(sheets[s].getName())};
var selectedfirstRow = ss.getRange(editRange).getRowIndex();
var selectedHeigth = ss.getRange(editRange).getHeight()
var selectedFullRange = master.getRange(selectedfirstRow,1,selectedHeigth,1);
var data = selectedFullRange.getValues();
for(n=0;n<data.length;++n){
if(data[n][0].length<16){
var dest = ss.getSheetByName(data[n][0].toString().replace(/ /g,''));//find the destination sheet
Logger.log(data[n][0].toString().replace(/ /g,''))
var destRange = dest.getRange(dest.getLastRow()+1,1);// define range
master.getRange(selectedfirstRow+n,2,1,1).copyTo(destRange);// and make copy below last row
}
}
}
Ich denke, für einige, was ich suche ist Art von "Wenn Zelle leer ist, dann gehe zur nächsten Zelle" Art von Code.
Was ich dachte funktionieren würde:
If(data[n][0].length==""{
// Do nothing
if(data[n][0].length<16){
// Do something
}
}
Alle Ideen, wie ich so etwas wie dieses nicht erhalten zu arbeiten?
bearbeiten
fand ich, dass die ursprüngliche IF-Anweisung Ich war gerade oben gepostet nicht in der korrekten Syntax. Ich habe es seitdem korrigiert, bekomme aber immer noch den gleichen Fehler.
New If Else if-Anweisung:
if(data[n][0].length=0){
//do nothing
}
else if(data[n][0].length<1){
//do something
}
Das hat den Trick für mich! Vielen Dank, dass Sie sich meinen Code angeschaut und eine Lösung bereitgestellt haben. – user1664305
Es ist mir eine Freude. Seien Sie vorsichtig bei der Verwendung der 'if' Anweisung mit Zahlen - in JavaScript wird 0 bis 'false' ausgewertet, was ein wenig kontraintuitiv ist. Für Strings wird dies jedoch den Trick machen. –