Google Apps Script 함수를 특정 시트 이외의 기능으로 실행하면 알림

소개



Google Apps Script에서 스프레드시트 프로그램을 작성하는 경우 이런 일이 발생하지 않습니까?
「에러가 나왔다고 생각하면, 액티브하게 하고 있는 시트가 다르다・・・」

이것은 있다고 생각하기 때문에, 이번에는 그것을 방지하는 프로그램을 만든다.

원래 "활성 시트"는?





이 경우는 「견적서」라고 하는 시트가 액티브라고 하게 된다.

지금 열려 있는 스프레드시트 내에서 어떤 시트를 열고 있습니까?



이것을 알면, 이용자에게 매우 상냥한 프로그램을 쓸 수 있을 것 같네요.
예를 들어, 이쪽을 보고 싶다.
Google Apps Script 견적서에서 데이터를 전기하고 지정된 폴더에 인보이스 만들기(스프레드시트)

상기의 기사에서 소개하고 있는 코드의 경우, 「견적서」라고 하는 시트가 액티브하지 않으면, 에러가 나온다. 왜냐하면 얻을 가치가 없기 때문입니다!

「견적서」라고 하는 시트에는 G18의 셀에 값이 존재해도, 그 이외의 시트에서는 G18의 셀에 값이 존재하지 않을지도 모른다. 결과적으로 활성 시트가 ​​"견적서"이외의 시트이면 값이 없으므로 오류가 발생합니다.

특정 시트 이외의 함수를 실행하면 경고를 발행합니다.


// Spreadsheetが開かれた時に自動的に実行されます.
function onOpen() {
  // 現在開いている、スプレッドシートを取得します.
  var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();

  // メニュー項目を定義します.
  var entries = [
    {name : "請求書を生成"  , functionName : "menuItem1"},
    {name : "PDF化する"  , functionName : "menuItem2"},
  ];
  // 「Custom」という名前でメニューに追加します.
  spreadsheet.addMenu("Custom", entries);
}

// menuItem1をクリックした時の処理
function menuItem1() {
 //現在のスプレッドシートを取得
 var ss = SpreadsheetApp.getActiveSpreadsheet();
 var sheet = SpreadsheetApp.getActiveSheet();
 //見積書以外で実行したらアラート
 var nowSheet = sheet.getSheetName();

  if (nowSheet === '見積書') {
     Logger.log('見積書がアクティブです');
    } else {
    menuItem1Alert();
    }
}

function menuItem1Alert() {
  var ui = SpreadsheetApp.getUi();
  var title = '見積書で実行してね!';
  var text = 'じゃないと失敗するの・・・'
  ui.alert(title, text, ui.ButtonSet.OK_CANCEL);
}

좋은 웹페이지 즐겨찾기