Google Apps Script
Introduction
用語
- SpreadSheetApp --- Google Spreadsheet アプリ
- SpreadSheet --- 個々のファイル
- Sheet --- タブ、ワークシート
- Range --- 選択範囲
アクティブとは
- active sheet --- 表示中のシート
- active range --- 表示中のシートの中で、ハ イライトされている箇所
- active cell --- 表示中のシートの中で、フォーカスされている単一のセル
カスタムファンクション
/**
* ドルを日本円に変換する
*
* @param {number} dollars ドル
* @return {number} 日本円
* @customfunction
*/
function USDTOJPY(dollars) {
const rate = 0.99;
const swissFrancs = dollars * rate;
return 'JPY' + swissFrancs;
}
以上をスクリプトとして記述した後、セルに=USDTOJPY(123)
とするだけで使える。
基本
SpreadSheet
// 取得
const spreadsheet =
SpreadsheetApp.getActiveSpreadsheet() || spreadsheet.getSheetByName('name');
// リネーム
spreadsheet.rename('2017 Avocado Prices in Portland, Seattle');
// シートの追加
spreadsheet.insertSheet(name);
Sheet
// 取得
const sheet = SpreadsheetApp.getActiveSpreadsheet();
// 複製
sheet.duplicateActiveSheet();
// リネーム
sheet.setName('MySheet');
// リサイズ
sheet.autoResizeColumns(1, 5);
// 固定行の設定
sheet.setFrozenRows(2);
// id取得
sheet.getSheetId();
// 最終行を取得
sheet.getLastRow();
// アクティブにする
sheet.activate();
Range
// F2より下にあるすべての値を、C2の位置に移動する
const range = sheet.getRange('F2:F');
range.moveTo(sheet.getRange('C2'));
// 指定した範囲の値について、3番目の列の値で並べ替える
const range = sheet.getRange('A3:D55');
range.sort(3);
// 範囲をずらしたり広げたりする
range.offset(
0, // 行方向のオフセット
0, // 列方向のオフセット
range.getHeight(), // 高さ
range.getWidth(), // 幅
);
// 列数、行数を取得する
range.getNumRows();
range.getNumColumns();
// - バンディング(配色の組み合わせ)を設定する
// - 例えば行ごとに交互に色をつけるなど
// - すでにバンディングがあるとエラーになるので、チェックしてから設定する
if (!range.getBandings()[0]) {
range.applyRowBanding(SpreadsheetApp.BandingTheme.LIGHT_GREY, false, false);
}
// スタイル
range
.setFontWeight('bold')
.setFontStyle('italic')
.setFontColor('#ffffff')
.setBackgroundColor('#007272')
.setNumberFormat('mmmm dd, yyyy (dddd)')
.setBorder(
true,
true,
true,
true,
null,
null,
null,
SpreadsheetApp.BorderStyle.SOLID_MEDIUM,
);
メニューを作る
onOpen()
という特殊な関数を使う。
function onOpen() {
const ui = SpreadsheetApp.getUi();
ui.createMenu('メニュー名')
.addItem('メニュー項目名', 'functionNameYouWantToExec')
.addSeparator()
.addItem('...', '...')
.addSeparator()
.addToUi();
}