episode6 GASの【指定セル範囲に色付け】「HUNTER×HUNTERで覚えるGoogle Apps Script」

この記事を読むことによって、GAS(Google Apps Script)でスプレッドシートの指定の範囲のセル背景やフォントに色を付けることを学べます。
GASをアニメ、ハンターハンターを通して入門の入門から学べる記事を掲載しております。

サイトマップはこちらから

GASサンプル集に戻る
メインメニューに戻る
これからプログラミングを始める方へ
基本情報技術者へ
自己紹介

前々回(episode4)の復習をします。

二次元配列を使って、ハンター試験のルーキー達の念系統がヒソカと同じかチェックをしました。

そのコードと結果です。

//アクティブなスプレッドシートを選択するグローバル領域(共通の処理)
const ss=SpreadsheetApp.getActiveSheet();

//行数(人数)を取得する
const N=ss.getLastRow();


//【メンバー】がヒソカと同じ念系統か判定する関数
function Hisoka() {

  let array= [];
  let judge = [];

  //B列の各メンバーの念を配列arrayに格納
  array=ss.getRange(1,2,N).getValues();
  console.log(array);

  for(i=0;i<N;i++){
   
    //【メンバー】の念はヒソカと同じ「変化系」か?
    if(array[[i]]=='変化系'){
      judge.push(['ヒソカと一緒']); //キルアの場合
    }else{
      judge.push(['XXX']); //キルア以外
    }
  }
  console.log(judge);

  //スプレッドシートC列4行分に判定結果の入った配列judgeごと入力する。
  ss.getRange(1,3,N).setValues(judge);
}

//ヒソカチェックのクリア
function HisokaClear(){
  
  ss.getRange(1,3,N).clear();
}


今回は、この表に色を付けます。
イメージとしては、厨二病っぽい感じにしたいと思います。

各キャラクターの名前(列A)と念系統(列B)を黒背景に白文字に、
ヒソカチェックの列(列C)は、紫にします。

列ABの4行2列分の範囲をcellDATAと定義します。

//A列B列の名前と念系統が入っているセル範囲をcelDATAと定義
let cellDATA=ss.getRange(1,1,4,2);

背景色を黒にしています。

cellDATA.setBackground(‘black’);

文字の色を白にしています。

cellDATA.setFontColor(‘white’);

列Cの4行1列分の範囲をcellHISOKAという名前にします。

//C列のヒソカチェックのセル範囲をcellHISOKAと定義
let cellHISOKA=ss.getRange(1,3,4);

白がffffff、黒が000000で、最初の2桁が赤、次が緑、最後が青なので、薄紫を[eeddee]で表しました。
このコードでは、赤と青を強めにしていて、薄い紫になります。

cellHISOKA.setBackground(‘#eeddee’);

ここまでのコードです。

//アクティブなスプレッドシートを選択するグローバル(共通の処理)
const ss=SpreadsheetApp.getActiveSheet();

//セルの背景色とフォントを変える
function rookieColor(){

  //A列B列の名前と念系統が入っているセル範囲をcelDATAと定義
  const cellDATA=ss.getRange(1,1,4,2);

  //背景色を黒にする
  cellDATA.setBackground('black');

  //文字を白にする
  cellDATA.setFontColor('white');

  //C列のヒソカチェックのセル範囲をcellHISOKAと定義
  const cellHISOKA=ss.getRange(1,3,4);

  //背景を薄紫にする
  cellHISOKA.setBackground('#eeddee');

}

ご精読ありがとうございました。

■参考文献の紹介■
初めてGASを学ぶ方向け。
スプレッドシートの基本的な使い方からGASのベースとなるJavaScriptの基礎文法、GASでの初歩的なプログラミングを学べます。

GASに少し慣れて来たら、基礎固めとリファレンスとしてこの本を通してじっくり学べます。

←episode5               episode7→

←GAS自作集サンプルへ戻る

episode5 GAS【指定セル範囲のフォント変更】「HUNTER×HUNTERで覚えるGoogle Apps Script」

この記事のシリーズを読むことで、アニメHUNTER×HUNTER(ハンターハンター)を通してGAS(Google Apps Script)の最初の一歩が学べます。

今回の記事では、

・指定の範囲の文字を太字

・フォントサイズの変更

・最終行のgetLastRow()の復習

についての概要が掴めます。


前回(episode4)の復習をします。

IF文とForループを使って、各キャラクターの念がヒソカと同じ「変化系」か、それ以外かで分岐しました。

//アクティブなスプレッドシートを選択するグローバル領域(共通の処理)
const ss=SpreadsheetApp.getActiveSheet();

//行数(人数)を取得する
const N=ss.getLastRow();
// console.log(N); 確認済みなのでコメントアウトしました。


//【メンバー】がヒソカと同じ念系統か判定する関数
function Hisoka() {

  for(i=1;i<=N;i++){
    let nen = ss.getRange(i,2).getValue(); //メンバーの念を取得
    // console.log(nen); 確認済みなのでコメントアウトしました。
  
    //【メンバー】の念はヒソカと同じ「変化系」か?
    if(nen=='変化系'){
      ss.getRange(i,3).setValue('ヒソカと一緒'); //キルアの場合
    }else{
      ss.getRange(i,3).setValue('XXX'); //キルア以外
    }
  }
}

//ヒソカチェックのクリア
function HisokaClear(){
  
  ss.getRange(1,3,N).clear();
}

このコードでもループを使ったIFによる分岐と、その結果の出力は可能なのですが、GASでは、SpreadsheetAppからアクティブシートを辿り、更にセルを辿るとその分の処理に時間がかかります。

そこで、配列を使って分岐をするコードをこちらに改変しました。

//アクティブなスプレッドシートを選択するグローバル領域(共通の処理)
const ss=SpreadsheetApp.getActiveSheet();

//行数(人数)を取得する
const N=ss.getLastRow();


//【メンバー】がヒソカと同じ念系統か判定する関数
function Hisoka() {

  let array= [];
  let judge = [];

  //B列の各メンバーの念を配列arrayに格納
  array=ss.getRange(1,2,N).getValues();
  console.log(array);

  for(i=0;i<N;i++){
   
    //【メンバー】の念はヒソカと同じ「変化系」か?
    if(array[[i]]=='変化系'){
      judge.push(['ヒソカと一緒']); //キルアの場合
    }else{
      judge.push(['XXX']); //キルア以外
    }
  }
  console.log(judge);

  //スプレッドシートC列4行分に判定結果の入った配列judgeごと入力する。
  ss.getRange(1,3,N).setValues(judge);
}

//ヒソカチェックのクリア
function HisokaClear(){
  
  ss.getRange(1,3,N).clear();
}

今回は、この様なシートを用意しました。
この表のA列にあるキャラクターの名前のフォントを変えます。

キャラの名前が掲載されている範囲は、セルA1からA4までになります。
この範囲を太字で文字の大きさを12ptにします。

キャラクターの人数は、getLastRowで取得します。

const N=ss.getLastRow();

範囲に「cellROOKIE(ルーキー)」と名前を付けて、大きさを変える範囲を確保します。

let cellROOKIE=ss.getRange(1,1,N);

(1,1,N)は、セルA1(1,1)からN行分の範囲という意味です。
これで、キャラクターが増えても対応可能です。

この範囲にフォントの大きさを12ptで太字にする設定を下記のコードに施します。

cellROOKIE.setFontSize(12).setFontWeight(‘bold’);

ここまでのコードです。

//アクティブなスプレッドシートを選択するグローバル領域(共通の処理)
const ss=SpreadsheetApp.getActiveSheet();

//行数(人数)を取得する
const N=ss.getLastRow();

//キャラクターの名前を12ptの太字にする
function bold12pt(){

  let cellROOKIE=ss.getRange(1,1,N);
  cellROOKIE.setFontSize(12).setFontWeight('bold');
  
}

ここでボタンに関数「bold12pt」をスクリプトを割り当てで割り当てます。
実行すると、

この様に、キャラクターの名前がフォント12の太字になりました。



5行目の

const N=ss.getLastRow();

で、最終行を取得しているので、キャラクターの名前が増えても対応可能です。
この様に少し増やしてみます。

新人潰しのトンパさん〜アモリ三兄弟まで追加しました。
再度実行してみます。

これで全員の名前が太字になりました。

←episode4               episode6→

←GAS自作サンプル集へ戻る

ご精読有難うございました。

■ GASの入門書の紹介です ■

詳解! Google Apps Script完全入門 [第3版]
単行本
Kindle版(電子書籍)

お疲れ様でした。ブレイクタイムPhotoは、

横浜のクルーズ船です。

HUNTER×HUNTERのGAS自作サンプル集のページに戻る
初めてのGASに戻る


自己紹介

モバイルバージョンを終了