Google Apps Scriptとはなにか? †
開発の準備をしていこう †
- Google Drive >> "GAS_lessons" フォルダを作成
- Google Sheets >> "MySpreadsheet" を作成
- Tools >> Script editor... より "MyProject" スクリプト作成
- デフォルトの Code.gs を "MyScript.gs" へ名称変更
- View >> Compact controlls を選択しエディタを最大化
Hello Worldを表示させよう †
- &color{red}(*); GAS は Google のサーバー上で実行されるためブラウザ上の部品を使った操作(ダイアログ表示等)は不可
- &color{red}(*); 下記コードは実行エラーとなる
function hello() {
alert("hello");
}
- ログに hello world を表示させる(View >> Logs より確認可能)
function hello() {
Logger.log("hello world");
}
- スプレッドシート上に hello! を表示させる
- &color{red}(*); 実行時に Authorization required ダイアログが表示されるため Review Permissions >> Allow で承認
function hello() {
Browser.msgBox("hello!");
}
カスタム関数を作ってみよう †
- スプレッドシート上で "=関数名()" で利用可能なカスタム関数を作成
- 引数の値を2倍する関数
function getDouble(n) {
return n * 2;
}
シートの値を操作してみよう †
- 対象を選択して処理をする(App > ActiveSpreadsheet > ActiveSheet > Range の順に指定)
- A1セルを指定して 100 を挿入する関数
function setData() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var range = sheet.getRange("A1");
range.setValue(100);
}
リファレンスを読み解いてみよう †
- 公式サイト >> REFERENCE >> Spreadsheet >> SpreadsheetApp を選択すると標準の Methods 一覧を確認可能
- Range(1, 2) を選択し 100 を挿入し背景色を変更する
function setData() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var range = sheet.getRange(1, 2);
range.setValue(100);
range.setBackground("#ff0000");
}
テストデータを作成してみよう †
- 1列目の1〜20行目に配列で定義した名前をランダムに挿入
- 2列目の1〜20行目にランダムな数値を挿入
function initSheet() {
var sheet = SpreadsheetApp.getActiveSheet();
var names = ["taguchi", "fkoji", "dotinstall"];
sheet.clear();
for (var i = 1; i <= 20; i++) {
sheet.getRange(i, 1).setValue(names[Math.floor(Math.random() * names.length)]);
sheet.getRange(i, 2).setValue(Math.floor(Math.random() * 101));
}
}
結果の判定をしてみよう †
- 2列目の値が70点以上であれば3列目に"OK"を表示し背景色を変更
function getResults() {
var sheet = SpreadsheetApp.getActiveSheet();
for (var i = 1; i <= sheet.getLastRow(); i++) {
if (sheet.getRange(i, 2).getValue() >= 70) {
sheet.getRange(i, 3).setValue("OK").setBackground("green");
} else {
sheet.getRange(i, 3).setValue("NG").setBackground("red");
}
}
}
addMenu()を使ってみよう †
function showMenu() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var menu = [
{name: "初期化", functionName: "initSheet"},
{name: "判定", functionName: "getResults"}
];
ss.addMenu("処理メニュー", menu);
}
onOpen()、onEdit()を使ってみよう †
- onOpen(): スプレッドシートが開かれた時に実行される関数
function onOpen() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var menu = [
{name: "初期化", functionName: "initSheet"},
{name: "判定", functionName: "getResults"}
];
ss.addMenu("処理メニュー", menu);
}
- onEdit(e): 編集された時に実行される関数
- 編集された時に編集者をコメントに追加する
function onEdit(e) {
e.range.setComment("Edited by: " + e.user);
}