onÖffnen Sie ein bestimmtes Blatt in AppScript

Aug 31 2020

Ich habe einen onOpenAusführungscode, möchte aber, dass dieser nur ausgeführt wird, wenn ein bestimmtes Blatt geöffnet wird (z. B. beim Öffnen sollte Sheet1die Funktion onOpen ausgeführt werden.) Weiß jemand, wie dies erreicht werden kann?

Folgendes möchte ich genau erreichen:

  1. Überprüfen Sie beim Öffnen der Tabelle, ob das aktive Blatt Blatt1 ist. Falls es dann eine Bedingung innerhalb dieses Blattes ausführt, wie unten gezeigt:
onOpen()
{
    //If the active sheet is "Sheet1" then perform this:
    //Sheet Execution comes here.
}

Aber hier ist das Problem mit der obigen Aussage:

onOpen prüft erst, wenn das Blatt geöffnet ist. Ich möchte es jedes Mal überprüfen, wenn das aktive Blatt "Sheet1" ist. Wenn der Benutzer beispielsweise zunächst die Tabelle öffnet, landet er auf "Sheet1". Jetzt wird die Bedingung überprüft und die Ausgabe angezeigt. Was passiert jedoch, wenn der Benutzer die Registerkarte in "Sheet2" ändert und dann zu "Sheet1" zurückkehrt. In diesem Fall onOpen()wird nicht ausgeführt. Ich möchte meine Prüfung jedes Mal durchführen, wenn der Benutzer landet oder zu "Sheet1" wechselt.

Hier ist ein weiteres Szenario:

mit onSelectionChange:

onSelectionCHange()
{
    //If the active sheet is "Sheet1" then perform this:
    //Sheet Execution comes here.
}

Dies funktioniert nun jedes Mal, wenn der Benutzer zu "Sheet1" wechselt. Hier ist jedoch das Problem, auch wenn der Benutzer zu verschiedenen Zellen in "Sheet1" wechselt onSelectionChange, was wiederum unerwünscht ist. Ich möchte die Funktion nur jedes Mal auslösen, wenn die Registerkarte / das Blatt in "Blatt1" geändert wird, und nicht nur, wenn das Arbeitsblatt geöffnet oder eine Auswahlzelle geändert wird.

Antworten

2 Marios Aug 31 2020 at 17:49

Erläuterung:

Um einen Codeblock innerhalb der onOpenFunktion nur auszuführen, wenn Sie die Tabellenkalkulationsdatei von Sheet1 aus öffnen , können Sie die folgende if-Bedingung erstellen :

function onOpen(e) {
const as = e.source.getActiveSheet().getName();
  if (as == 'Sheet1'){
//code you want to be executed when you open the spreadsheet from Sheet1
}
}

Nachteil:

Die Funktion onOpen wird nur ausgeführt, wenn Sie die Tabellenkalkulationsdatei öffnen . Sie können nicht einfach zwischen Blättern wechseln und erwarten, dass onOpen funktioniert.


Lösung:

Um einen Code beim Wechseln zwischen verschiedenen Blättern auszuführen, können Sie stattdessen verwenden onSelectionChange(e). Im folgenden Beispiel wird der Wert der Zelle A1 von Blatt1 festgelegt, wenn Sie von einem anderen Blatt zu Blatt1 wechseln :

function onSelectionChange(e) {
  
const as = e.source.getActiveSheet();
  if (as.getName() == 'Sheet1'){ 
    as.getRange('A1').setValue("This is Sheet1");
  }
}

Und hier ist eine allgemeine Codevorlage zum Ausführen eines Codes beim Wechsel zu Sheet1 :

  function onSelectionChange(e) {
      
    const as = e.source.getActiveSheet();
      if (as.getName() == 'Sheet1'){ 
        // put your code here
      }
    }

Verweise:

  • onOpen (e)
  • onSelectionChange (e)