2017-08-04 1 views

Antwort

1

Sie haben 2 Möglichkeiten, und ich bin nicht sicher, ob ich ein Fan von Widerrist von ihnen bin, aber das ist meine Meinung. Sie können sich anders fühlen:

Option 1: Erzwingen Sie die Ausführung der Funktion.

Eine Funktion in einer Zelle wird nur ausgeführt, wenn sie auf eine Zelle verweist, die geändert wurde. Das Ändern eines Blattnamens löst keine Funktionen in der Tabelle aus. Aber wir können die Ausführung der Funktion erzwingen, indem wir einen Bereich an sie übergeben. Wenn sich ein Element in diesem Bereich ändert, wird die Funktion ausgelöst.

können Sie das folgende Skript verwenden, um eine benutzerdefinierte Funktion zu erstellen, die den Namen abruft:

function mySheetName() { 
    var key = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getName(); 
    return key; 
} 

und in der Zelle statt folgend:

=mySheetName(A1:Z) 

Nun, wenn jeder Wert in einer Zelle In diesem übergebenen Bereich ändert sich das Skript. Dies dauert eine Sekunde, um das Skript auszuführen, und setzt jedes Mal, wenn ein Wert geändert wird, eine Nachricht in die Zelle, so dass dies sehr schnell lästig werden kann. Wie bereits erwähnt, erfordert es auch eine Änderung im Bereich, um es auszulösen, also nicht wirklich hilfreich in einer ziemlich statischen Datei.

Option 2: Verwenden Sie das OnChange Ereignis

Während der Laufzeit fühlt sich besser als die oben genannte Option, und dies auf einem Wert in den Zellen der Tabelle ändert sich nicht ab, ich mag das nicht, weil es zwingt Wohin der Name geht. Sie können eine Tabelle mit Dienstprogrammen verwenden, um diese Position in verschiedenen Blättern zu definieren, wenn Sie dies wünschen. Im Folgenden finden Sie die Grundidee und können Sie starten, wenn Sie diese Option mögen.

Das OnChange-Ereignis wird ausgelöst, wenn der Blattname geändert wird. Sie können den Code unten anspruchsvoller machen auf Fehler zu überprüfen, überprüfen Sie die Blatt-ID nur die Arbeit an einem bestimmten Blatt usw. Der Grundcode ist jedoch:

function setSheetName(e) { 
    var key = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getName(); 
    SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getRange('K1').setValue(key); 
} 

Sobald Sie den Code gespeichert haben, in Der Skript-Editor legt den Trigger für den Änderungsvorgang des aktuellen Projekts auf diese Funktion fest. Bei jedem Änderungsereignis wird der Blattname in die Zelle K1 geschrieben. Um den Trigger zu setzen, wählen Sie Auslöser des aktuellen Projekts unter dem Edit Menü.

Verwandte Themen