2016-03-30 9 views
0

Ich habe ein Google-Blatt, das überprüft, welche Zelle geändert wird, und wenn es in den richtigen Bereich fällt, aktualisiert es das Datum in der letzten Spalte. Der Code sieht wie folgt aus:Google Sheets Zellreferenz außerhalb des Bereichs auf getActiveCell()

function onEdit() { 
var firstProductCol = 6; 
var lastProductCol = 30; 

var s = SpreadsheetApp.getActiveSheet(); 
if(s.getName() == "Skills Map") { //checks that we're on the correct sheet 
    var activeCell = s.getActiveCell(); 
    Logger.log("activeCell: " + activeCell.getA1Notation()); 

    var seName = activeCell.offset(0, 3 - activeCell.getColumn()).getValue(); 
    Logger.log('value of B: [' + seName + "]"); 
} 

Und der Fehler schlägt es auf der Linie 7 ist das nur ein getActiveCell ist ... so nicht sicher, ich bin wie, dass ein Fehler dazu führen kann, geworfen werden gegeben, wenn es isn‘ Wenn Sie eine aktive Zelle verwenden, können Sie den Wert des Feldes nicht ändern.

Wenn ich das Skript selbst ausführe, laufe ich nie auf den Fehler. Das Problem ist hin und wieder, wenn andere das Blatt verwenden (ich weiß nicht, was sie besonders machen), erhalte ich einen Tagesendebericht über diesen Fehler ...

Verwenden der Debugging-Tools in Script Editor, ich kann nur die Protokolle des letzten Laufs sehen ... obwohl es eine Ansicht -> Konsolenprotokolle gibt, aber das scheint keine der Protokolle von vorherigen Läufen zu speichern ... irgendeinen Weg, das zu tun?

Irgendwelche Vorschläge zum Fehler selbst? Prost.

Antwort

1

Sieht aus, dass die Zeilennummer 7

var seName = activeCell.offset(0, 3 - activeCell.getColumn()).getValue(); 

ist Da sollte Spaltennummer eine positive Zahlen sei es sehr wahrscheinlich ist, dass der Fehler anderer, wenn der Benutzer bearbeiten eine Zelle auftritt als die Spalten A, B oder C.

Eine Möglichkeit, dies zu behandeln, ist zu überprüfen, dass der Wert, der activeCell.getColumn() zurückgibt, weniger als 3 ist.

+0

Danke für die Antwort. Die Art und Weise, wie mein Blatt arbeitet, besteht darin, dass, wenn Sie irgendwas zwischen den Spalten 4 und 30 bearbeiten, angenommen wird, solange die Spalte "Name" ausgefüllt ist, dann aktualisiert es das letzte Feld. Also der Punkt von Zeile 7 ist, den Wert der Zelle in der gleichen Zeile, aber in Spalte 3 zu bekommen ... wenn es einen besseren Weg als die Verwendung von "Offset" gibt, würde ich mich freuen, direkt in Spalte 3 zu gehen, wie ich weiß, dass es immer so sein wird ... Vielleicht sollte ich nur die aktuelle Zeile holen, und Spalte 3 als statische Zahl verwenden und nur den Wert dieser Zelle bekommen ... –

Verwandte Themen