Google Apps Scriptとはなにか?

開発の準備をしていこう

  1. Google Drive >> "GAS_lessons" フォルダを作成
  2. Google Sheets >> "MySpreadsheet" を作成
  3. Tools >> Script editor... より "MyProject" スクリプト作成
  4. デフォルトの Code.gs を "MyScript.gs" へ名称変更
  5. 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);
}

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2017-03-21 (火) 20:48:56 (2820d)