Google Spreadsheet에서 활성 시트가 ​​변경될 때 스크립트를 실행하고 싶습니다.

개요



이 게시물에서는 Google Spreadsheet에서 활성 시트가 ​​변경될 때 스크립트를 실행하는 방법에 대해 설명합니다. 2020년 4월 22일에 onSelectionChange 간단한 트리거가 추가되었습니다. 불행히도, 내 환경에서 이것은 즉시 사용할 수 없으며 셀을 선택해도 트리거가 발화하지 않는 상태가 계속되었습니다. 오늘, 이것을 확인했는데, 동작하는 것을 확인했으므로, 여기에서는 타이틀의 골을 실현하기 위한 샘플 스크립트를 소개하겠습니다.

데모





사용방법



다음과 같은 흐름에서 사용하십시오.

  • Google Spreadsheet 컨테이너—바운드 스크립트에 다음 스크립트를 복사하여 붙여넣습니다.
    function onOpen(e) {
      const prop = PropertiesService.getScriptProperties();
      const sheetName = e.range.getSheet().getSheetName();
      prop.setProperty("previousSheet", sheetName);
    }
    
    function onSelectionChange(e) {
      const prop = PropertiesService.getScriptProperties();
      const previousSheet = prop.getProperty("previousSheet");
      const range = e.range;
      const a1Notation = range.getA1Notation();
      const sheetName = range.getSheet().getSheetName();
      if (sheetName != previousSheet) {
        range.setValue(`Changed tab from ${previousSheet} to ${sheetName}. ${a1Notation}`);
    
        // When the tab is changed, this script is run.
    
      } else {
        range.setValue(a1Notation);
      }
      prop.setProperty("previousSheet", sheetName);
    }
    

  • Google 스프레드시트를 한 번 닫았다가 다시 엽니다.
  • 그러면 onOpen가 실행되고 현재 시트 이름이 PropertiesService에 저장됩니다.
  • 현재, onSelectionChange 의 이벤트 오브젝트에는, 시트의 이동 전후, 선택되는 셀의 전후의 정보는 포함되어 있지 않은 것 같습니다. 이에 대해서는 향후 업데이트에 기대하고 싶습니다. 이러한 정보를 얻기 위해 이 샘플에서는 PropertiesService를 사용합니다.

  • 여기서 스프레드 시트의 셀을 클릭하면 onSelectionChange가 실행되고 선택한 셀에 a1Notation이 입력됩니다. 또한 활성 시트를 이동하면 이를 기반으로 시트가 어디에서 어디로 이동했는지에 대한 정보가 셀에 입력됩니다.
  • onSelectionChange 의 이벤트 트리거는 여러 곳에서 활약할 것 같습니다.

    참고


  • onSelectionChange(e)
  • Properties Service
  • 좋은 웹페이지 즐겨찾기