GoogleAppsScript屋さん

GoogleAppsScript のサンプルコードなどを載せていきます

スプレッドシートの読込み・書込み

Googleスプレッドシートを操作するにあたって、一番の基本は値の「読込み」と「書込み」です。

例として、A~C列に設定された値を読込み、四則演算の結果をE列に書込むサンプルプログラムを紹介します。

実行前

E列には値が設定されていません。 f:id:rokuni62:20170809224130p:plain

サンプルコード

このコードを実行します。

function myFunction() {
  
  // 現在選択中のシートを取得する
  var sheet = SpreadsheetApp.getActiveSheet();
  
  // 1行目から最終行まで処理を繰り返す
  for (var row = 1; row <= sheet.getLastRow(); row++) {
    
    // A~C列の値を読込む
    var a   = sheet.getRange("A" + row).getValue();  // 四則演算の左辺を取得(A列)
    var ope = sheet.getRange("B" + row).getValue();  // 四則演算の記号を取得(B列)
    var b   = sheet.getRange("C" + row).getValue();  // 四則演算の右辺を取得(C列)
    
    // 四則演算の記号に応じた計算を行う
    var ans = 0;
    switch(ope) {
      case "+":
        ans = a + b;
        break;
      case "-":
        ans = a - b;
        break;
      case "*":
        ans = a * b;
        break;
      case "/":
        ans = a / b;
        break;
    }
    
    // E列に計算結果を書込む
    sheet.getRange("E" + row).setValue(ans);
    
  }
  
}

実行後

計算結果がE列に設定されています。 f:id:rokuni62:20170809225813p:plain

説明

プログラムの流れとしては以下の通りです。

  1. 処理対象のシートを取得する( SpreadsheetApp.getActiveSheet()
  2. A~C列の値を読み込む( getRange().getValue()
  3. E列に計算結果を書き込む( getRange().setValue()
  4. 2~3を先頭行から最終行まで繰り返す( getLastRow()

スプレッドシートのオブジェクトは

Spreadsheet > Sheet > Range > value

という親子関係になっています。

慣れるまでは親の方から順番にアクセスするように気をつけた方が良いでしょう。

Rangeオブジェクトに直接値を代入しようとしてエラーになるケースもよくありますので、 必ず getValue() や setValue() を介して操作するようにしましょう。

getLastRow() は「シート内で値が設定されている最終行を返す」というものです。他にも appendRow() という「最終行の次行に値を追加する」といった GoogleAppsScript 独自の便利機能が多数ありますので、英語ですが公式リファレンスに目を通してみるのも良いでしょう。