episode5 GASの「指定したセル範囲のフォントを変える」(Hunter×Hunterで覚えるGoogle Apps Script)

この記事を読むことで、GAS(Google Apps Script)で、スプレッドシートの指定の範囲の文字を太字にする処理を学べます。
GASをアニメ、ハンターハンターを通して入門の入門から学べる記事を掲載しております。

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

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

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

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

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


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

  //行数を取得して、変数Nにメンバーの人数を格納
  let N=ss.getLastRow();

  //ループを使って各キャラクターの念が「変化系」と等しいか判定して結果入力
  for(let i=1;i<=N;i++){
    let nen=ss.getRange(i,2).getValue();  //【メンバー】の念を取得
  
    //【メンバー】の念はヒソカと同じ「変化系」か?
    if(nen=='変化系'){                      
      ss.getRange(i,3).setValue('ヒソカと一緒');
    }else{
      ss.getRange(i,3).setValue('XXX'); //違うからこっちに分岐
    }

  }  
}


//ヒソカチェッククリア
function HisoClear(){

  //行数を取得して、変数Nに人数を格納
  let N=ss.getLastRow();
  ss.getRange(1,3,N).clear();
}

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

そこで、配列を使って分岐をするコードも作りました。

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


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

  //行数を取得して、変数Nにメンバーの人数を格納
  let N=ss.getLastRow();

  //【メンバー】の念を格納する配列を宣言
  let array=[];

  //変化系と等しいか判定結果を入れる配列
  let judge=[];

  //念を配列に格納
  array=ss.getRange(1,2,N).getValues();

  //arrayに念が格納されたことをログに出力して確認
  console.log(array);

  //ループを使って配列の中身が「変化系」と等しいか調べて判定結果を二次元配列として追加
  for(let i=0;i<N;i++){
    if(array[i][0]=='変化系'){
      judge.push('ヒソカと一緒');
    }else{
      judge.push('XXX');
    }
  }

  //判定結果が二次元配列として格納されたことをログで確認
  console.log(judge);

  
  //配列judgeをスプレッドシートに出力
  for(let i=1;i<=N;i++){
    ss.getRange(i,3,1).setValue(judge[i-1]);
  }
}


//ヒソカチェッククリア
function HisoClear(){

  //行数を取得して、変数Nに人数を格納
  let N=ss.getLastRow();
  ss.getRange(1,3,N).clear();
}

今回は、この表のA列にあるキャラクターの名前のフォントを変えます。
キャラクター名の所を12ptと少し大きいフォントにして、更に太字にして目立たせます。

ハンター試験ルーキーのデータが掲載されている範囲は、セルA1からC4まであります。この範囲が文字で大きさ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();

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

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

}

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


7行目の

const N=ss.getLastRow();

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

新人潰しのトンパさんからビスケまで、キャラクターを追加しました。
再度実行してみます。

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

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

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

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

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

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

←episode4               episode6→

←GAS自作サンプルへ戻る

投稿者: nekosiestr

プログラミング学習中の発達障害者です。宜しくお願いします。 趣味で写真を撮っています。 プログラミングは、GAS/HTML/CSS/JavaScript/jQuery/PHP、 発達障害は、自閉症スペクトラムASD/ADHD、 写真は、以前はコンパクトデジカメ、現在は、OLYMPUSミラーレス一眼を使っています。