教えて!GAS!

GASの基礎知識・書き方について紹介します。

Google Apps ScriptでのSpreadsheetサービスのSpreadsheetAppクラスの種類

SpreadsheetAPPクラスは、Spreadsheetサービスの最上位に位置するトップレベルオブジェクトです。SpreadsheetAPPクラスには、スプレッドシートの取得や現在アクティブになっているシートやセル範囲を取得するメンバーが用意されています。

メンバー一覧

主な種類を紹介します。

メンバー 説明
create(スプレッドシート名) 新しいスプレッドシートを作成します
flush() すべての保留中の変更を適用します
getActiveRange() 現在アクティブな範囲を取得します
getActiveSheet() 現在アクティブなシートを取得します
deleteActiveSpreadsheet() アクティブなスプレッドシートを削除します
getCurrentCell() 現在のセルを取得します
getActiveCell() 現在アクティブなセルを取得します
getActiveSpreadsheet() 現在アクティブなスプレッドシートを取得します
getUi() スプレッドシートのユーザーインターフェース(UI)を取得します
getUser() 現在のユーザーを取得します
open(スプレッドシート) スプレッドシートを開きます
openById(スプレッドシートID) スプレッドシートIDでスプレッドシートを開きます
openByUrl(URL) スプレッドシートのURLでスプレッドシートを開きます
setActiveRange(範囲) 指定した範囲をアクティブに設定します
setActiveSheet(シート) 指定したシートをアクティブシートに設定します
setActiveSpreadsheet(スプレッドシート) 指定したスプレッドシートをアクティブスプレッドシートに設定します
setActiveRangeList(範囲リスト) 指定した範囲リストをアクティブに設定します
setActiveSelection(範囲) 指定した範囲をアクティブな選択に設定します
setNamedRange(名前, 範囲) 指定した名前付き範囲を設定します
setColumnWidth(列番号, 幅) 指定した列の幅を設定します
setRowHeight(行番号, 高さ) 指定した行の高さを設定します
setBackground(背景色) 範囲の背景色を設定します
setFontColor(フォント色) 範囲のフォント色を設定します
setFontSize(フォントサイズ) 範囲のフォントサイズを設定します
setValue(値) セルまたは範囲に値を設定します

プログラミング例

具体的なプログラミング例を紹介します。

create(スプレッドシート名)

function スプレッドシートを作成() {
  let 新しいシート = SpreadsheetApp.create('新しいスプレッドシート');
  Logger.log('作成されたスプレッドシートのURL: ' + 新しいシート.getUrl());
}

flush()

function フラッシュ() {
  let シート = SpreadsheetApp.getActiveSpreadsheet();
  // ここでいくつかの操作を行う
  SpreadsheetApp.flush();
  Logger.log('すべての保留中の変更が適用されました。');
}

getActiveRange()

function アクティブ範囲を取得() {
  let アクティブ範囲 = SpreadsheetApp.getActiveSpreadsheet().getActiveRange();
  Logger.log('アクティブ範囲: ' + アクティブ範囲.getA1Notation());
}

getActiveSheet()

function アクティブシートを取得() {
  let アクティブシート = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  Logger.log('アクティブシートの名前: ' + アクティブシート.getName());
}

deleteActiveSpreadsheet()

function アクティブスプレッドシートを削除() {
  let シート = SpreadsheetApp.getActiveSpreadsheet();
  シート.deleteActiveSpreadsheet();
  Logger.log('アクティブなスプレッドシートが削除されました。');
}

getCurrentCell()

function 現在のセルを取得() {
  let 現在のセル = SpreadsheetApp.getActiveSpreadsheet().getCurrentCell();
  if (現在のセル != null) {
    Logger.log('現在のセルの値: ' + 現在のセル.getValue());
  } else {
    Logger.log('現在のセルが選択されていません。');
  }
}

getActiveCell()

function アクティブセルを取得() {
  let アクティブセル = SpreadsheetApp.getActiveSpreadsheet().getActiveCell();
  Logger.log('アクティブセルの値: ' + アクティブセル.getValue());
}

getActiveSpreadsheet()

function アクティブスプレッドシートを取得() {
  let スプレッドシート = SpreadsheetApp.getActiveSpreadsheet();
  Logger.log('アクティブなスプレッドシートの名前: ' + スプレッドシート.getName());
}

getUi()

function ユーザーインターフェースを取得() {
  let ui = SpreadsheetApp.getUi();
  ui.alert('これはアラートダイアログです');
}

getUser()

function ユーザーを取得() {
  let ユーザー = SpreadsheetApp.getActiveSpreadsheet().getUser();
  Logger.log('現在のユーザー: ' + ユーザー);
}

open(スプレッドシート)

function スプレッドシートを開く() {
  let スプレッドシート = SpreadsheetApp.open('既存のスプレッドシート');
  Logger.log('スプレッドシートを開きました: ' + スプレッドシート.getName());
}

openById(スプレッドシートID)

function スプレッドシートをIDで開く() {
  let スプレッドシートID = 'your-spreadsheet-id-here';
  let スプレッドシート = SpreadsheetApp.openById(スプレッドシートID);
  Logger.log('スプレッドシートを開きました: ' + スプレッドシート.getName());
}

openByUrl(URL)

function スプレッドシートをURLで開く() {
  let URL = 'your-spreadsheet-url-here';
  let スプレッドシート = SpreadsheetApp.openByUrl(URL);
  Logger.log('スプレッドシートを開きました: ' + スプレッドシート.getName());
}

setActiveRange(範囲)

function アクティブ範囲を設定() {
  let シート = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  let 範囲 = シート.getRange('A1:B2');
  SpreadsheetApp.setActiveRange(範囲);
  Logger.log('アクティブ範囲が設定されました: ' + 範囲.getA1Notation());
}

setActiveSheet(シート)

function アクティブシートを設定() {
  let シート = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('シート1');
  SpreadsheetApp.setActiveSheet(シート);
  Logger.log('アクティブシートが設定されました: ' + シート.getName());
}

setActiveSpreadsheet(スプレッドシート)

function アクティブスプレッドシートを設定() {
  let スプレッドシート = SpreadsheetApp.getActiveSpreadsheet();
  SpreadsheetApp.setActiveSpreadsheet(スプレッドシート);
  Logger.log('アクティブスプレッドシートが設定されました: ' + スプレッドシート.getName());
}

setActiveRangeList(範囲リスト)

function アクティブ範囲リストを設定() {
  let シート = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  let 範囲1 = シート.getRange('A1:A2');
  let 範囲2 = シート.getRange('B1:B2');
  SpreadsheetApp.setActiveRangeList([範囲1, 範囲2]);
  Logger.log('アクティブ範囲リストが設定されました。');
}

setActiveSelection(範囲)

function アクティブ選択を設定() {
  let シート = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  let 範囲 = シート.getRange('A1');
  SpreadsheetApp.setActiveSelection(範囲);
  Logger.log('アクティブ選択が設定されました: ' + 範囲.getA1Notation());
}

setNamedRange(名前, 範囲)

function 名前付き範囲を設定() {
  let シート = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  let 範囲 = シート.getRange('A1:B2');
  シート.setNamedRange('サンプル範囲', 範囲);
  Logger.log('名前付き範囲が設定されました: サンプル範囲');
}

setColumnWidth(列番号, 幅)

function 列幅を設定() {
  let シート = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  シート.setColumnWidth(1, 200);
  Logger.log('1列目の幅が200に設定されました。');
}

setRowHeight(行番号, 高さ)

function 行の高さを設定() {
  let シート = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  シート.setRowHeight(1, 30);
  Logger.log('1行目の高さが30に設定されました。');
}

setBackground(背景色)

function 背景色を設定() {
  let シート = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  let 範囲 = シート.getRange('A1:B2');
  範囲.setBackground('#FF0000');
  Logger.log('範囲A1:B2の背景色が赤に設定されました。');
}

setFontColor(フォント色)

function フォント色を設定() {
  let シート = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  let 範囲 = シート.getRange('A1:B2');
  範囲.setFontColor('#0000FF');
  Logger.log('範囲A1:B2のフォント色が青に設定されました。');
}

setFontSize(フォントサイズ)

function フォントサイズを設定() {
  let シート = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  let 範囲 = シート.getRange('A1:B2');
  範囲.setFontSize(14);
  Logger.log('範囲A1:B2のフォントサイズが14に設定されました。');
}

setValue(値)

function 値を設定() {
  let シート = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  let 範囲 = シート.getRange('A1');
  範囲.setValue('こんにちは');
  Logger.log('セルA1に値「こんにちは」が設定されました。');
}

まとめ

SpreadsheetAppクラスは、スプレッドシートを操作するための多機能なクラスであり、新しいスプレッドシートの作成や、既存のスプレッドシートの操作を簡単に行うことができます。各メンバーを適切に使い分けることで、スプレッドシートを効率的に管理できるようになります。