AppScript의 특정 시트에 대한 onOpen

Aug 31 2020

나는이 onOpen실행 코드를하지만 난 그게 (개방에 예를 들어 특정 시트를 열 경우에만 실행하고자하는 Sheet1사람의 노하우가 어떻게이를 달성하기 않습니다으로 onOpen 함수를 실행해야합니다.)?

정확히 내가 이루고 싶은 것은 다음과 같습니다.

  1. 스프레드 시트를 열 때 활성 시트가 ​​sheet1인지 확인합니다. 그런 다음 아래 표시된 것처럼 해당 시트 내에서 조건을 실행하는 경우 :
onOpen()
{
    //If the active sheet is "Sheet1" then perform this:
    //Sheet Execution comes here.
}

그러나 위의 진술에 대한 문제는 다음과 같습니다.

onOpen은 시트가 열린 후에 만 ​​확인합니다. 활성 시트가 ​​"Sheet1"일 때마다 확인하고 싶습니다. 예를 들어 처음에는 사용자가 스프레드 시트를 열고 "Sheet1"로 이동합니다. 이제 조건이 확인되고 출력이 표시됩니다. 그러나 사용자가 탭을 "Sheet2"로 변경 한 다음 "Sheet1"로 돌아 오면 어떻게 될까요? 이 경우 onOpen()실행되지 않습니다. 사용자가 "Sheet1"로 이동하거나 전환 할 때마다 확인을 수행하고 싶습니다.

이제 또 다른 시나리오가 있습니다.

사용 onSelectionChange:

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

이제 이것은 사용자가 "Sheet1"로 전환 할 때마다 작동하지만 사용자가 "Sheet1"에서 다른 셀로 전환하더라도 문제 onSelectionChange가 발생하며 이는 다시 원치 않는 일입니다. 내가 원하는 것은 스프레드 시트가 열리거나 선택 셀이 변경 될 때뿐만 아니라 탭 / 시트가 "Sheet1"로 변경 될 때마다 함수를 트리거하는 것입니다.

답변

2 Marios Aug 31 2020 at 17:49

설명:

Sheet1 에서 스프레드 시트 파일을 열 때만onOpen 함수 내에서 코드 블록을 실행하려면 다음 if 조건을 생성 할 수 있습니다.

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
}
}

약점:

으로 onOpen 당신이 때 기능은 실행 스프레드 시트 파일을. 시트 사이를 전환하고 onOpen이 작동하기를 기대할 수는 없습니다.


해결책:

다른 시트간에 전환 할 때 코드를 실행하려면 대신을 사용할 수 있습니다 onSelectionChange(e). 다음 예제 에서는 다른 시트에서 Sheet1로 전환 할 때 Sheet1의 A1 셀 값을 설정합니다 .

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

다음은 Sheet1로 전환 할 때 코드를 실행하는 일반적인 코드 템플릿입니다 .

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

참조 :

  • onOpen (e)
  • onSelectionChange (e)