第3章 ケーススタディ:月次の売上表を整える ・ MISSION 12

ミッション12:自分のメニューから動かす(onOpen)

📋 ミッション一覧

お題

スプレッドシートを開いたら「月次処理」というメニューが出て、「大口を判定」で markLarge が動くようにしよう。保存したら、ブラウザの再読み込み(F5)で開き直し、メニューから実行する。

10月の売上 - Google スプレッドシート
10月の売上

練習のため、実行するたびに表は最初の状態に戻ってから動きます(本物のスプレッドシートでは戻りません。スクリプトの変更は Ctrl+Z で戻せることもありますが、まとめては戻せません)。

Apps Script無題のプロジェクトデプロイ ▾
function onOpen() {
SpreadsheetApp.getUi()
.('月次処理')
.addItem('大口を判定', '')
.();
}
function markLarge() {
const sheet = SpreadsheetApp.getActiveSheet();
const lastRow = sheet.getLastRow();
const amounts = sheet.getRange(2, 4, lastRow - 1, 1).getValues();
const labels = amounts.map((row) => [row[0] >= 100000 ? '大口' : '']);
sheet.getRange(2, 5, labels.length, 1).setValues(labels);
}
Ctrl+S: 保存 ・ Ctrl+R: 実行(エディタ) ・ F5: 開き直す

第3章 ・ MISSION 12

自分のメニューから動かす(onOpen)

スプレッドシートを開いたら「月次処理」というメニューが出て、「大口を判定」で markLarge が動くようにしよう。保存したら、ブラウザの再読み込み(F5)で開き直し、メニューから実行する。

いま
ゴール(メニュー「月次処理」から実行)

コードの読み方

function onOpen() {
スプレッドシートを開いたときに自動で動く関数。名前を変えると動かない。
SpreadsheetApp.getUi().createMenu('月次処理')
画面(Ui)に「月次処理」というメニューを作る。
.addItem('大口を判定', 'markLarge')
項目を足す。押すと markLarge という関数が動く。
.addToUi();
できたメニューをメニューバーに出す。

onOpen という名前の関数は、スプレッドシートを開いたときに自動で動く。ここでメニューを足しておけば、Apps Script を開かない人でもメニューから処理を動かせる。チームで使うシートに向いている。

GAS の始め方とよく使う書き方は、記事にまとめています。GAS とは? 始め方とよく使う書き方

書いたコードは、このページの中の隔離した場所で動きます。ページの外やほかのサイトには届きません。

※ Google スプレッドシートと Apps Script の挙動を模擬的に表現したものであり、本来の挙動と一部異なる可能性があります。

※ Google スプレッドシートは Google LLC の商標です。当サイトは Google とは関係ありません。