Google App Script(GAS)を使ってみよう Part 3

あなたはGASのことを、どのくらい知っていますか?Part1・Part2とGASの基本操作を学んできました。
今回の「Google App Scriptを使ってみよう」は、特定のセルに値を表示する方法です。
この記事では、GAS初心者から基本的な操作方法を学ぶことができます。
もしよかったら試しながら読み進めてみてください。
特定の単一セルに値を表示する
function writeValueOnA1cellOfSheet1( ){
SpreadsheetApp.openById(‘スプレッドシートID’).getSheetByName(‘Sheet1’).getRange(‘A1’).setValue(‘テスト’)
}


解説
SpreadsheetApp.openById(‘スプレッドシートID’)⇨ 指定したスプレッドシートを取得するためのコードです。
SpreadsheetApp.openById(‘スプレッドシートID’).getSheetByName(‘Sheet1’)⇨ 指定したスプレッドシートの中の「Sheet1」という名前のシートを取得するためのコードです。
SpreadsheetApp.openById(‘スプレッドシートID’).getSheetByName(‘Sheet1’).getRange(‘A1’)⇨ 指定したスプレッドシートの中の「Sheet1」というシートのA1セルを取得するためのコードです。
SpreadsheetApp.openById(‘スプレッドシートID’).getSheetByName(‘Sheet1’).getRange(‘A1’).setValue(‘テスト’)⇨ 指定したスプレッドシートの中の「Sheet1」というシートのA1セルに「テスト」と書き込むためのコードです。
getRangeでA1セルを取得する方法
getRange(‘A1’) = getRange(1,1)
getRange(開始行、開始列)
getRange(1,1) ⇨ 最初の1は、1行目を指していて、最後の1は1列目を指しています。
つまりgetRange(1,1)は、A1セルを取得していることになります。

function writeValueOnA1cellOfSheet2( ){
SpreadsheetApp.openById(‘スプレッドシートID’).getSheetByName(‘Sheet2’).getRange(1,1).setValue(‘テスト’)
}
指定したスプレッドシートの「Sheet2」のA1セルに「テスト」という文字が表示されます。


練習問題
下記の赤文字(ここにコードを書いてください)に、Sheet2のE1セルに「Jupyter」を表示するコードを書いてください。
function practiceWriteAdeccoOnCellE1OfSheet2( ){
‘ここにコードを書いてください’
}
答え⇩
1:function writeValueOnA1cellOfSheet2( ){
SpreadsheetApp.openById(‘スプレッドシートID’).getSheetByName(‘Sheet2’).getRange(‘E1’).setValue(‘Jupyter’)
}

または
2:function writeValueOnA1cellOfSheet2( ){
SpreadsheetApp.openById(‘スプレッドシートID’).getSheetByName(‘Sheet2’).getRange(1,5).setValue(‘Jupyter’)
}


特定の複数セルに値を表示する
function writeValuesOnCellRangeA1C3OfSheet3( ){
const values = [[1,2,3],[4,5,6],[7,8,9]] ;
SpreadsheetApp.openById(‘スプレッドシートID’).getSheetByName(‘Sheet3’).getRange(‘A1:C3’).setValues(values)
}
指定したスプレッドシートの「Sheet3」のA1からC3セルに、1から9までの数字が表示されます。


なにこれ?
なにこれ? – – – [[1,2,3],[4,5,6],[7,8,9]]
[ ]は、行データを表現するときに使用します。
また、[ ]の中に、複数の行データ(=[ ])を入れると、複数行データを表現することができます。
[[1,2,3],[4,5,6],[7,8,9]]は3行3列の複数行データになります。
少し分解すると…
[
[1,2,3], —> 1行3列の行データ
[4,5,6], —> 1行3列の行データ
[7,8,9] —> 1行3列の行データ
]
複数セルに値を表示するお作法
getRange( )で取得する複数セル範囲の大きさ(行列の大きさ)
setValues( )で表示したいものの大きさ(行列の大きさ)
getRange( )で指定する範囲の大きさと、setValues( )で設定するデータの大きさを一致させる必要があります。
例えば
const values = [[1,2,3],[4,5,6],[7,8,9]] —> 3行3列の複数行データ
SpreadsheetApp.openById(‘スプレッドシートID’).getSheetByName(‘Sheet3’).getRange(‘A1:C3’) —> 3行3列分の大きさ
練習問題
1:下記のaに、3列3行の複数行データを書いてください。
2:下記のb(ここにコードを書いてください)に、Sheet3のE5:G7に3列3行の複数行データを表示するコードを書いてください。
(なお、3列3行の複数行データはvaluesという箱に格納するため、setValues( )のカッコの中はvaluesを指定してください)
function practiceWriteValuesOnCellRangeE1G3OfSheet3( ){
const values = [[ a ],[ a ],[ a ]] ;
b:’ここにコードを書いてください’
}
答え⇩
function practiceWriteValuesOnCellRangeE1G3OfSheet3( ){
const values = [[1,2,3],[4,5,6],[7,8,9]] ;
SpreadsheetApp.openById(‘スプレッドシートID’).getSheetByName(‘Sheet3’).getRange(‘E5:G7’).setValues(values)
}


入力の際の注意
・スプレッドシートIDを間違えない
(スプレッドシートIDとは、URL:https://docs.google.com/spreadsheets/d/xxxxxxxxxxxxx/edit のdの後ろxxxxxxxxxxxx 部分のことです。)
・getRange(開始行, 開始列)の行列番号間違えない。
(例:getRange(1, 1)は、最初の「1」は行番号、2番目の「1」は列番号を指しています。)
・ const values = [[1,2,3],[4,5,6],[7,8,9]] 複数データを入力する際、行と行の間もカンマで区切ることを忘れない。
弊社では、Google Apps Script を使用した、業務効率化、自動化を行う部門があります。Google Work Spaceをご利用の企業様、個人事業主様、自動化などでお困りでしたら、弊社までお問い合わせください。
何百の自動化プログラムを組んできたエンジニアが、お客様の業務自動化をご支援いたします!