Web

Google Apps Scriptでスプレッドシートのセルの値を取得・変更する ~Google Analyticsのレポートを自動作成 その弐~


 
こんにちは。広報担当の小林です。
 
前回に引き続き、Google Analyticsの統計レポートの自動作成手順をご紹介します。
手順は以下の通り、Googleスライドを作成します。
 
 

  1. Google Apps Scriptを動かしてみる
  2. Google Apps Scriptでスプレッドシートのセルの値を取得・変更する
  3. Google Analytics apiを使ってアクセス情報をスプレッドシートに表示する
  4. Google Slides apiを使ってスライドの中身を書き換える

 
 
今回は②、Google Apps Scriptでスプレッドシートのセルの値を取得・変更してみたいと思います。
 

Google Apps Scriptでスプレッドシートのセルの値を取得・変更する

Google Apps Script(以下GAS)の基本的な使い方は前回の記事をご覧ください。
 
今回はGASを使用してスプレッドシートのセルの値を操作していきます。
Excel VBAを触れた経験がある方は取っ付きやすいと思います。
 
題材として以下のようなスプレッドシートを使用します。
 

 
前回同様スプレッドシートを作成してスクリプトエディタを開きましょう。
スクリプトエディタは上部メニューにある「ツール」の「スクリプトエディタ」を押せば開きます。
 

セルを取得する

まずセル(Range)オブジェクトを取得します。
セルオブジェクトの取得には getRange() メソッドを使用します。
 

SheetObject.getRange(range)

 
getRange() の引数によって取得するセルの範囲を指定することもできます。
 

function getVal(){
  //シートを取得
  var sheet = SpreadsheetApp.getActive().getSheetByName('シート1');
  
  //セルを取得
  var range1 = sheet.getRange('A1');       //A1を取得
  var range2 = sheet.getRange('A2:D2');    //A2~D2の範囲を取得
  var range3 = sheet.getRange(2, 3);       //getRange(n番目の行, n番目の列) C2を取得
  var range4 = sheet.getRange(3, 1, 2, 3); //getRange(n番目の行, n番目の列, n行取得, n列取得) A3~C4の範囲を取得
}

 

セルの値を取得する

次にセルオブジェクトから値を取り出します。
値の取得には getValue() 又は getValues() メソッドを使用します。
 

rangeObject.getValue()
rangeObject.getValues()

 
getValue() は指定した範囲の最も左上にあるセルの値を返します。
getValues() は指定した範囲の全てのセルの値を二次元配列で返します。
 
実際に上で取得したセルの値を取り出してみましょう。
 

function getVal(){
  //シートを取得
  var sheet = SpreadsheetApp.getActive().getSheetByName('シート1');

  //セルを取得
  var range1 = sheet.getRange('A1');       //A1を取得
  var range2 = sheet.getRange('A2:D2');    //A2~D2の範囲を取得
  var range3 = sheet.getRange(2, 3);       //getRange(n番目の行, n番目の列) C2を取得
  var range4 = sheet.getRange(3, 1, 2, 3); //getRange(n番目の行, n番目の列, n行取得, n列取得) A3~C4の範囲を取得
  
  
  //range4から値を取得する
  var cellValue = range4.getValue();  //結果:A3
  var cellArray = range4.getValues(); //結果:[[A3,B3,C3],[A4,B4,C4]]
  
  //ログの表示
  Logger.log(cellValue);
  Logger.log(cellArray);
}

 
値を取得後にログを表示しています。
 

 
getValues() で取得した値は上記の通りに次元配列になります。
上のスクリプトの場合は
 
cellArray[0][0] → A3
cellArray[1][2] → C4
 
となります。
 

セルの値を変更する

最後にセルの値を変更します。
セルの値の変更は setValue() 又は setValues() メソッドです。
 

rangeObject.setValue(value)
rangeObject.setValues(array)

 
setValue() を複数セルに対して使用すると、指定した範囲の値が全て同じ値に変更されます。
複数セルに対して別々の値を入れる場合は setValues() を使用して下さい。
以下がソースです。
 

function setVal(){
  //シートを取得
  var sheet = SpreadsheetApp.getActive().getSheetByName('シート1');
  
  //セルを取得
  var range1 = sheet.getRange('A5');       //A5を取得
  var range2 = sheet.getRange('B5:D5');    //B5~D5を取得
  var range3 = sheet.getRange(6, 1, 2, 4); //A6~D7を取得
  
  //range1,range2の値をsetValue()を使用して変更
  range1.setValue('い'); //A5の値が 'い' に変わる
  range2.setValue('ろ'); //B5~D5全ての値が 'ろ' に変わる
  
  //range3の値をsetValues()を使用して変更
  range3.setValues([['は','に','ほ','へ'],['と','ち','り','ぬ']]); //A6~D7の値が順に 'は','に','ほ','へ','と','ち','り','ぬ' に変わる
}

 
実行すると以下のようにセルの値が変更されます。
 

 
setValues() に渡す引数は getValues() の返り値同様、二次元配列です。
範囲が1行でも同様ですのでご注意を。
 
 
スプレッドシートの操作に関しては以上になります。
少しでもお役に立てば幸いです。
 
次回は対にGoogle Analyticsからデータを取得していきたいと思います。
それではまた。



関連リンク

各種お問合わせはこちらから!

採用に関するお問い合わせはこちらから!