GAS で Spreadsheet を操作する #4

株式会社リュディアです。GAS で Spreadsheet を操作する #3 の続きです。設定やスプレッドシートのサンプルは前回のものを利用します。掲載するソースコードはすべて GAS の開発環境で動作確認をしています。

GAS で Spreadsheet を操作する #3 で変数にセットされたスプレッドシートの情報を取得しました。今回は変数にセットされたスプレッドシートの値を変更してみましょう。最初に元となる名簿の情報を以下に示します。

住所録サンプル

次のコードをみてください。

function mySS_4() {
 const ss = SpreadsheetApp.getActiveSpreadsheet() ;
 const sheet = ss.getSheetByName('シート1') ;
 
 const startRow = 1 ;
 const lastRow = sheet.getLastRow() ;
 const startColumn = 1 ;
 const lastColumn = sheet.getLastColumn() ;
 
 const range = sheet.getRange( startRow, startColumn, lastRow, lastColumn ) ;
 const data = range.getValues();
 
 data[ 1 ][ 0 ] = '渡辺' ; 
 data[ 6 ][ 4 ] = 'ABC-DEFG-HIJK' ;
 
 console.log( data ) ;
}

// 実行結果
// [ [ '姓', '名', '性別', '都道府県', '電話番号' ],
//   [ '渡辺', '一郎', '男', '青森', '090-1111-1111' ], <- 姓が青木から渡辺に書き換えられている
//   [ '井上', '二郎', '男', '栃木', '090-2222-2222' ],
//   [ '上村', '三郎', '男', '石川', '090-3333-3333' ],
//   [ '江崎', '四郎', '男', '岐阜', '090-4444-4444' ],
//   [ '小倉', '五郎', '男', '和歌山', '090-5555-5555' ],
//   [ '川端', '一子', '女', '島根', 'ABC-DEFG-HIJK' ], <- 電話番号が ABC-DEFG-HIJK に書き換えられている
//   [ '木村', '二子', '女', '山口', '090-7777-7777' ],
//   [ '倉田', '三子', '女', '高知', '090-8888-8888' ],
//   [ '剣崎', '四子', '女', '長崎', '090-9999-9999' ],
//   [ '小島', '五子', '女', '鹿児島', '090-0000-0000' ] ]

今回も最終行の 2 箇所のみが重要です。data[ 1 ][ 0 ] = '渡辺' で、0から数えて 1、つまり2行目の"青木"の姓が"渡辺"に書き換えられていることがわかります。同様に data[ 6 ][ 4 ] の電話番号はアルファベットの列に書き換えらえていることがわかります。

ここで注意してほしいことは値が書き換えらえているのはあくまで変数 data に対してでありスプレッドシート自体は書き換えられていないことです。実際にスプレッドシートを見てください。値が変わっていませんよね?

値をスプレッドシートに反映させるには、以下の例にある range.setValues( data ) を実効します。range オブジェクトの setValues メソッドに値の変更を施した data を渡します。

function mySS_5() {
 const ss = SpreadsheetApp.getActiveSpreadsheet() ;
 const sheet = ss.getSheetByName('シート1') ;
 
 const startRow = 1 ;
 const lastRow = sheet.getLastRow() ;
 const startColumn = 1 ;
 const lastColumn = sheet.getLastColumn() ;
 
 const range = sheet.getRange( startRow, startColumn, lastRow, lastColumn ) ;
 const data = range.getValues();
 
 data[ 1 ][ 0 ] = '渡辺' ; 
 data[ 6 ][ 4 ] = 'ABC-DEFG-HIJK' ;
 
 range.setValues( data ) ;
}

スプレッドシートを見てみましょう。赤字にしている部分が書き換わっていることがわかりますね?

書き換えられたスプレッドシート

GAS でスプレッドシートを扱うときに最後のスプレッドシートへの書き戻しを忘れることはよくあります。注意してください。

では、ごきげんよう。


この記事が気に入ったらサポートをしてみませんか?