AppScript의 특정 시트에 대한 onOpen
나는이 onOpen실행 코드를하지만 난 그게 (개방에 예를 들어 특정 시트를 열 경우에만 실행하고자하는 Sheet1사람의 노하우가 어떻게이를 달성하기 않습니다으로 onOpen 함수를 실행해야합니다.)?
정확히 내가 이루고 싶은 것은 다음과 같습니다.
- 스프레드 시트를 열 때 활성 시트가 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"로 변경 될 때마다 함수를 트리거하는 것입니다.
답변
설명:
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)