【GASの最初の一歩】HUNTER×HUNTERの自作サンプル

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

キャラクターと一緒に冒険している感覚で自作サンプルのコードを動かして頂けたらきっと楽しいと思います♪


episode1 「セル操作で入力と消去」

episode2 「文字入力と消去をボタン操作で行う」

episode3 「範囲を指定してまとめて入力(二次元配列は団地だ!)」

episode4 「ヒソカチェックで、IFとループを一気に習得」

episode5 「指定したセル範囲のフォントを変える」

episode6 「指定したセル範囲に色を付ける」

episode7 「キャラの身長で演算(平均・条件に該当する数のカウント)」

episode8 (最終回)「キャラの身長をシンプルなグラフ化する」

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

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

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

初めてのGoogle Apps Scriptに戻る
写真クリエイターとしての活動

自己紹介

初めてのGoogle Workspace 〜スプレッドシートやChrome、Googleカレンダーなど〜

この連載記事では、スプレッドシートやフォーム、ChromeといったGoogle Workspaceについて、忙しい方向けにオススメの動画と本を紹介しております。

また、スプレッドシートに関しては、オリジナル関数の自作サンプルの記事も書いていて、図と文書を用いて解説しております。

ツール別に書籍や動画といった教材を掲載致しましたので、

・就活準備の学生の方

・新卒でPCスキルを付けたい方


・既に社会人として働いて、業務の生産性を向上させたい方


・中高年の学び直しや社会復帰を目標とされる方



にとって、「学びのハードルを極限まで下げるお手伝い」をしております。

■ Google Workshapce の各ツール ■

スプレッドシート

フォーム


カレンダー

Chrome

Gmail

Drive

ドキュメント

スライド

Map

GAS

■ 関連記事 ■


とりあえず事務職で働きたいから手っ取り早くExcel教えてくれ!

急にプレゼンすることになったから手っ取り早くパワポ教えてくれ!

Wordのポイントを手っ取り早く教えてくれ!



メインメニュー

写真クリエイターとしての活動
自己紹介

episode3 GAS【二次元配列は団地!!】範囲指定でまとめて入力「HUNTER×HUNTERで覚えるGoogle Apps Script」

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

この記事では、

・配列は「0:ゴン」、「1:キルア」、「2:クラピカ」、「3:レオリオ」のイメージ

・配列を団地に例えて「キャラクター」と「念能力」の二次元配列を作成

・配列の長さをlengthを使って求め、同じ長さ分の行と列をスプレットシートに確保して配列を出力

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

この記事で作成する配列は、キャラクター4人分の「キャラ名」と「念能力」を格納する4行2列の配列です。

シートに出力する関数、消去する関数の2つを作って、それぞれボタンに割り当て(登録)します。

また、シートに入力されている範囲をgetDataRangeで配列として扱えます。

まずは前回(episode2)の復習をします。

・セルA1に「ハンターハンター」と入力する関数と消去する関数を作り、それぞれをボタンに登録しました。

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


//入力とログ出力をする関数(ゴンさんの家)
function myInput() {
  
  //セル入力
  ss.getRange(1,1).setValue('ハンターハンター');

  //ログ出力
  console.log(ss.getRange(1,1).getValue());

}


//消去する関数(キルアさんの家)
function myClear() {

  //セルA1を消去
  ss.getRange(1,1).clear();

}

それでは、ここから配列にキャラクターの名前と念能力を格納していきます。

二次元配列に格納するするデータは、

「ゴン」「強化系」
「キルア」「変化系」
「クラピカ」「具現化系」
「レオリオ」「放出系」

です。

スプレッドシートはExcelの様に行と列の二次元ですので、二次元配列を使って入力します。

二次元配列や配列と聞くと難しそうですが、イメージは「団地(マンションでも)」です。

配列は添字0から始まります。

0階・・・ゴン(00号室に「ゴンの名前」 、01号室に「ゴンの強化系」)

1階・・・キルア(10号室に「キルアの名前」 、11号室に「キルアの変化系」)

2階・・・クラピカ(20号室に「クラピカの名前」 、21号室に「クラピカの具現化系」)

3階・・・レオリオ(30号室に「レオリオの名前」 、31号室に「レオリオの放出系」)

というイメージで二次元配列を「団地」と捉えると、掴みやすくなるのかも知れません。

以上を踏まえてコードを書いていきます。

まずは、キャラクターの名前と念の系統を入力する関数であるnenArray(配列は英語でarray)から解説します。

キャラクター名と念系統の二次元配列をこのように作成します。

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

//スプレッドシートにキャラクターの名前と念系統の入った配列を出力する
function nenArray(){

  //二次元配列hhにキャラクターの名前と念系統を格納
  const hh = [
      ['ゴン','強化系'],
      ['キルア','変化系'],
      ['クラピカ','具現化系'],
      ['レオリオ','放出系']
    ];
  
  //配列hhをログに出力
  console.log(hh);
}

実行すると、配列がログに出力されました。

次に、上記の二次元配列は4行2列ですので、スプレッドシートのA1を起点に4行2列分のデータを確保するプログラムを書いていきます。

まず、行と列が4行2列になっていることをログ出力で確認します。
長さを調べるのにlengthを使います。

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

//スプレッドシートにキャラクターの名前と念系統の入った配列を出力する
function nenArray(){

  //二次元配列hhにキャラクターの名前と念系統を格納
  const hh = [
      ['ゴン','強化系'],
      ['キルア','変化系'],
      ['クラピカ','具現化系'],
      ['レオリオ','放出系']
    ];
  
  //配列hhをログに出力
  console.log(hh);

  //行の長さを調べる
  console.log(hh.length);

  //列の長さを調べる
  console.log(hh[0].length);

}

行が4人分のhh.lengthが4になることはイメージしやすいと思います。

その下のhh[0].lengthですが、これは[‘ゴン’,’強化系’]の長さを調べていて、2列分なので2と返しています。


キルアのhh[1].lengthにしても同じ結果になりますが、全てのキャラクター(行)に対して2列になるので、代表してゴンのhh[0].lengthを用いております。

この行と列の長さは、スプレッドシートにキャラクターの配列hhを出力する時に、出力範囲を一致させる必要があるので調べました。

それではスプレッドシートに出力致します。
末尾にこの部分を追加します。

//二次元配列hhを格納するために、スプレッドシートの4行2列を確保して出力する
  ss.getRange(1,1,hh.length,hh[0].length).setValues(hh);

ここまでのコードの全てです。

//スプレッドシートにキャラクターの名前と念系統の入った配列を出力する
function nenArray(){

  //二次元配列hhにキャラクターの名前と念系統を格納
  const hh = [
      ['ゴン','強化系'],
      ['キルア','変化系'],
      ['クラピカ','具現化系'],
      ['レオリオ','放出系']
    ];
  
  //配列hhをログに出力
  console.log(hh);

  //行の長さを調べる
  console.log(hh.length);

  //列の長さを調べる
  console.log(hh[0].length);

  //二次元配列hhを格納するために、スプレッドシートの4行2列を確保して出力する
  ss.getRange(1,1,hh.length,hh[0].length).setValues(hh);

}

次に、データを消去に関するmyClear関数を作成します。
消去する範囲を、スプレットシート上のデータが存在する範囲として捉えることの出来るgetDataRangeを使っています。

シートオブジェクト.getDataRange()

以下、myClear関数のコードです。

//出力した配列を消去する
function myClear() {

  //出力した配列をgetDataRangeを使って取得して消去する
  ss.getDataRange().clear();

}

この書式でシート上のデータを配列として取得できました。
その下のclearメソッドで入力範囲を削除できます。

ここまでのコード全体を記述します。

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


//スプレッドシートにキャラクターの名前と念系統の入った配列を出力する
function nenArray(){

  //二次元配列hhにキャラクターの名前と念系統を格納
  const hh = [
      ['ゴン','強化系'],
      ['キルア','変化系'],
      ['クラピカ','具現化系'],
      ['レオリオ','放出系']
    ];
  
  //配列hhをログに出力
  console.log(hh);

  //行の長さを調べる
  console.log(hh.length);

  //列の長さを調べる
  console.log(hh[0].length);

  //二次元配列hhを格納するために、スプレッドシートの4行2列を確保して出力する
  ss.getRange(1,1,hh.length,hh[0].length).setValues(hh);

}


//出力した配列を消去する
function myClear() {

  //出力した配列をgetDataRangeを使って取得して消去する
  ss.getDataRange().clear();

}

シートのボタンにそれぞれのスクリプトを割り当てて実行します。

ボタンを右クリックで選択して、右上の「・・・」から「入力」ボタンに「nenArray」、消去ボタンに「myClear」のスプリクトを割り当てます。

これで、キャラの名前と念の入った配列をボタンを押すことで手軽に実行出来る様になりました。


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

横浜のクルーズ船です。

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

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

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

←episode2               episode4→

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

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


自己紹介

episode1 GAS【セル操作で入力と消去】ハンター×ハンターで覚えるGoogle Apps Script

この記事を読むことで、

・GASを動かす準備を画像つきで解説

・今日初めてGASを使う方がセルA1に好きな文字を入れるコードを書ける

・文字の消去のコードも書ける

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

GASは環境設定不要ですぐ始められますが、

・Googleアカウント
・「マイドライブ」などから「新規」でスプレッドシートを追加

・スプレッドシートの上記メニュー「拡張機能」→ 「Apps Script(エディタ)」

この3点の準備は必要です。
「Apps Script(エディタ)」にコードを書いて行きます。

エディタには「無題のプロジェクト」から「HHepisode1」という名前を付けて変更しました。

準備が整ったところで、まず最初に、スプレッドシートのセルA1に「ハンターハンター」と入力するスクリプトを書いてみます。

「こんにちは」や好きな言葉、他の作品で例えば「鬼滅の刃」、「SPY×FAMILY」、「呪術廻戦」などでも楽しければ何でもOKです!

getRange(‘セル番地’)でセルを指定して、setValue(‘入力する値’)で指定したセルに値を入力します。

初期状態のまっさらなスプレッドシートです。

エディターに下記のコードを書いて行きます。

function hh1no1() {

  //アクティブなシートにアクセスしている
  const ss=SpreadsheetApp.getActiveSheet();

  //セルA1をgetRangeで捕まえて文字列「ハンターハンター」を入力
  ss.getRange('A1').setValue('ハンターハンター');
  
}

こんな感じに書けました。
エディターは[Ctrl]+[S]で保存します。

Macの方は、「Command」と読み替えて下さい。

[Ctrl]+[R]で実行しようとすると・・・。

「承認が必要です」とメッセージが出るので、「権限を確認」で、

自分のアカウントを選ぶと、

この様なアラート画面が出ます。

なぬ!!

でも大丈夫。

「詳細」をクリックして。

「安全ではないページ」に移動して、

パソコンが爆発とか無いので、大丈夫です(=^x^=)

少し下にスクロールして「続行」を押します。

実行ログです。

されたことが分かり、スプレッドシートを見てみると、

この様に無事に入力されていました。

次に、セルA1に入力された「ハンターハンター」の文字を、実行ログに出力してみます。

//ここを追加してセルA1の内容を表示する
console.log(ss.getRange(1,1).getValue());

を追加します。

function hh1no2() {

  const ss=SpreadsheetApp.getActiveSheet();

  ss.getRange('A1').setValue('ハンターハンター');

  //ここを追加してセルA1の内容をログに表示する
  console.log(ss.getRange(1,1).getValue());
  
}

最後に、このセルA1の文字を消します。

setValue(‘入力する値’)のところを、clear()と書き換えます。

//セルA1を消去
ss.getRange(1,1).clear();

function hh1no3() {

  const ss=SpreadsheetApp.getActiveSheet();

  //セルA1を消去
  ss.getRange(1,1).clear();

}

実行すると・・・

無事に消去できました。

今回は、セルをA1を(1,1)と記述しましたが、(‘A1’)と書いても同様に処理できます。
また、セルB1は(1,2)で、セルA2は(2,1)です。
後に範囲を取得する場合に備えて今回は(1,1)と記述しました。


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

横浜ランドマークタワーのジンジャエールです。
美味しかったです。

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

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

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

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

episode2へGO→

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


自己紹介

【初めてのGAS(Google Apps Script)】自作などのサンプル集、書籍とサイト紹介

このコーナーでは、Googleの様々なサービスを連携して開発出来るプログラミング言語、GAS(Google Apps Script グーグル アップス スクリプト)について、

・今日から始める方向けの簡単な自作サンプル

・学習にオススメのサイトを初心者目線で学習アウトプット

・プログラミング学習コンテンツの同じ問題をGASとPythonで回答

などを掲載しております。

ハンターハンターの自作サンプルでGASの第一歩を学習

大谷翔平の目標シート

■ 学習コンテンツpaizaラーニングのレベルアップ問題集をPythonとGASで解いてみたサンプル集■

PythonとGASでpaizaレベルアップ問題集を解いてみた集


※ 私はGASの書籍やサイトを紹介しているだけのただの一読者、閲覧者であり、著者の方とは面識がございません

いつも隣にITのお仕事」様のブログで自習して自分の環境で動かしたコードも掲載しています。

・ウェブサイト
【保存版】初心者向け実務で使えるGoogle Apps Script完全マニュアル



■ スプレッドシートとGASに慣れてきたら、GASでChatworkにメッセージを送って見る ■

「ねこあつめその1」文字の表示と簡単な計算


「ねこあつめその2」セルを選択して出力する

「ねこあつめその3」Forループを使って猫たちの名前を取り出す


「ねこあつめその4」IF文で条件に該当するねこ名を出力する

「ねこあつめその5」出力したセルに処理済み「済」を出力する

「ねこあつめその6」ループに制御を加えて一つずつ出力する

「ねこあつめその7」の行の範囲を取得する

「ねこあつめその8」の右端の列をクリアする

「ねこあつめその9」Chatworkを使う前にIT用語学習

「ねこあつめその10」GASで「Chatwork」を使ってみる。


「ねこあつめその11」GASで「Chatwork」に送る(=^x^=)mm

「ねこあつめその12」GASでChatworkに「トリガー」で時限式に送る

「ねこあつめシリーズその13」GASで「ねこあつめ」ChatworkのAPIトークンにプロパティストアを使って格納する

「ねこあつめシリーズその14」GASで「ねこあつめ」のデータをChatworkに送信にながら配列に慣れていく

「ねこあつめシリーズその15」Chatworkに送るメッセージを装飾する

「ねこあつめシリーズその16」ドキュメンテーションコメントを追加(最終回)

◆フォーム作成の学習ノート◆

<ねこフォーム1>「ねこあつめ親睦会」のフォームを作ってみる

<ねこフォーム2>GASで作成したフォームを指定のフォルダに格納する

<ねこフォーム3>GASで作成したフォームに「ねこあつめ」の「おなまえ」と「あそんだグッズ」を追加する

<ねこフォーム4>ねこあつめフォームに「メールアドレス」を追加する

<ねこフォーム5>ねこあつめフォームに「ラジオボタン」を追加する

<ねこフォーム6>ねこあつめフォームに「チェックボックス」を追加する

<ねこフォーム7>ねこあつめフォームに「プルダウンリスト」を追加する

<ねこフォーム8>ねこあつめフォームに「スケールアイテム」と「パラグラフテキストアイテム」を追加する

◆ フォーム実践編 ◆

<ねこフォーム実践編1>就職セミナーアンケート


<ねこフォーム実践編2>プログラミング学習アンケート

<ねこフォーム実践編3>「就職氷河期世代&大人の発達障害」読者アンケート

■ Gmail ■

メール定型文を下書きへGo!!

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

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

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

Google Workspaceに戻る
写真クリエイターとしての活動


自己紹介