Sheet の取得方法

現在開いているシートを取得

現在開いているシートを取得するには、単にSpreadsheet#getActiveSheetを実行するだけです。

const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();

複数のシートの中から、特定のシートを取得

これにはまず

  1. すべてのシートを取得 (Sheet#getSheets)
  2. 1つずつ回して、例えばSheet#getNameなどそのシート名が探しているシートかどうかテストする

ことで取得できます。

const sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets();

let target: GoogleAppsScript.Spreadsheet.Sheet;
for (const sheet of sheets) {
  if (sheet.getName() === 'bar') {
    target = sheet;
    break;
  }
}

// target を使って処理…

Google Apps Script ではArray#findが使えないようなのでfor-ofを使っています。

スプレッドシートのメニューにカスタム項目を追加する

手順は以下のようになります。

  1. スプレッドシートを開いた時発火 onOpen
  2. Spreadsheet#addMenuを使って登録する

Google Apps Script で定義されているonOpenは特殊で、そのスプレッドシートが開かれた時に自動で実行してくれる関数になります。なのでこの中で、 Spreadsheet#addMenuをしてしまうことで、ユーザーが直接それ用の関数を実行しなくても毎回自動で登録するような形にできます。

スプレッドシートのメニューにカスタム項目を追加するコード

以下のようにするとメニューに「nju33」という項目が増えるはずです。

function onOpen() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  ss.addMenu('nju33', [{name: 'createSheet', functionName: 'createSheet'}]);
}

function createSheet() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  // 新しいシートを追加して選択
  ss.insertSheet();
}

スプレッドシートでユーザーにアクションを求める

ここで言うアクションは、

  • 通知を出して「OK」をクリックしてもらう
  • 「はい」か「いいえ」で答えてもらう
  • あることについて入力してもらう

などです。

スプレッドシートでユーザーにアクションを求める前に

上で挙げた系のメソッドはUiクラスで定義されています。スプレッドシートの場合これは、

const ui = SpreadsheetApp.getUi();

で取得することができます。以下uiは上記で取得した値とします。

スプレッドシートでアラートを出す

Ui#alertがあります。

const response = ui.alert('アラートです');

responseにはユーザーが起こしたアクションの結果が入ります。この場合はButtonのタイプが返ります。

Button のタイプには以下のものがあります。

  • CLOSE xボタンで閉じた
  • OK 「OK」を選択
  • CANCEL 「キャンセル」を選択
  • YES 「はい」を選択
  • NO 「いいえ」を選択

ボタンのカスタマイズ

第二引数へButtonSetのプロパティを渡すことでボタンをカスタマイズできます。

ui.alert('アラートです', ui.ButtonSet.YES_NO_CANCEL);

このボタンのタイプは以下の4つがあります。

  • OK はい
  • OK_CANCEL OK/キャンセル
  • YES_NO はい/いいえ
  • YES_NO_CANCEL はい/いいえ/キャンセル

タイトルをつける

引数を3つ渡すと、第一引数がタイトルになります。

ui.alert('アラートのタイトルです', 'アラートです', ui.ButtonSet.YES_NO_CANCEL);

スプレッドシートでプロンプトを出す

プロンプトとは何かしら入力できるアラートみたいなものです。

const promptResponse = ui.prompt('名前');

戻り値のpromptResponseは2つのメソッドを持っています。

  • getResponseText これは入力された文字列を取得
  • getSelectedButton これはボタンのタイプを取得(アラートと同じ)

こちらもアラートと同じで3つまで引数を設定することが可能です。

新しいスプレッドシートを作成する

SpreadsheetApp.create(シート名)を使います。

例えばSpreadsheetApp.create('Google App Scripts から作成')というコードを実行すると以下のように新しい新しいスプレッドシートが作られます。