【最初の最初】getRangeを体感するスクリプト【Googleスプレッドシート】【GAS】
エクセル・スプレッドシートに慣れた方は、「D4」「AA103」のようなセルの番地指定のほうが親しみがある方が多いのではないでしょうか。そのような書き方にも対応はしていますが、今後いろいろ活用していく中で、getRangeの指定方法を体感の中で学んでほしいです。
getRange(①,②,③,④) です。①②が起点を指示し、③④でそこからいくらの範囲を指定するかになります。
① 起点の「行」タテ
② 起点の「列」ヨコ
③ 起点を含めた「行」タテの範囲
④ 起点を含めた「列」ヨコの範囲
getRange(①,②,1,1) のように、③④が1の場合は単独のセルを指定したということになります。
さあ、慣れるのにスプレッドを使ったアプリを作成してみました。二つの段階に分けて作成しています。
getRangecolor1
コードです。
function getRangecolor1() {
var sheet =SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var one = sheet.getRange(14,6).getValue()
var two = sheet.getRange(14,7).getValue()
var three = sheet.getRange(14,8).getValue()
var four = sheet.getRange(14,9).getValue()
sheet.getRange(3,3,10,10).setBackground("#FFFFFF")
sheet.getRange(one,two,three,four).setBackground("#FFF2cc")
}
ここのポイントは、セルの値を取得する変数を準備する(one,two,three,four)
⇒その変数で、getRangeの範囲を指定しています。スプレッドの指定範囲を変更して、スクリプトを実行してみてください。思い通りの範囲の色が変わったでしょうか?慣れるまで何度か検証してみてくださいね。これが基本になります。
sheet.getRange(3,3,10,10).setBackground("#FFFFFF") は、最初に全範囲を白にするというプログラムです。これがないと、色がどんどん上書きされてしまいます。あれ?10マスを想定して罫線で範囲を作っているのですが、10マス以外のところを指定してしまったら、動作がおかしくなってしまいますね。というわけで、ver2です。
getRangecolor2
function getRangecolor2() {
var sheet =SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var one = sheet.getRange(14,6).getValue()
var two = sheet.getRange(14,7).getValue()
var three = sheet.getRange(14,8).getValue()
var four = sheet.getRange(14,9).getValue()
if(one <3||two<3|| one+three >= 14 || two+four >= 14) {
sheet.getRange(3,3,10,10).setBackground("#000000")
}else{
sheet.getRange(3,3,10,10).setBackground("#FFFFFF")
sheet.getRange(one,two,three,four).setBackground("#FFF2cc")
}
}
if(one <3||two<3|| one+three >= 14 || two+four >= 14) {
sheet.getRange(3,3,10,10).setBackground("#000000")
}else{
が書き足されました。これが「条件文」です。罫線の範囲外を指定した場合、黒塗りにしてアラートを出すようにしてみました。
さて、今回の目的は、getRangeを体感的に指定できるような練習環境の準備でした。それにちょっとした「変数」「条件文」と少しテクニックを加えてみています。
そのあたりは別のお話で。
どんな記事ならサポートしてみようと思えるか、ご要望ありましたら教えてくださいね。