【LT/ハンズオン】GAS 入門講座_at_2021/09/04(土) 池袋もくもく会

技術開発部の山本です。

池袋もくもく会の途中の休憩時間で開催されているLTに登壇しました。ハンズオン形式の「GAS 入門講座」をやらせていただきました。

次回以降のもくもく会でも色々なLTが開催されます。私が次に登壇するときは、今回の内容を応用した「GASを使ってAPIを利用してみよう」をやりたいと思います。



発表で使ったGoogle スライド



ハンズオンで書いたコード

function myFunction() {
 // このGASを開いた元のスプレッドシートを取得
 var ss = SpreadsheetApp.getActiveSpreadsheet();

 // 上で取得したシートで現在開かれているシートを取得
 var sheet = ss.getActiveSheet();

 // getRange・・・上で取得したシートの「1」行目かつ「2」列目のセルを取得する
 // setValue・・・取得したセルに「Hello World」を出力する
 sheet.getRange(1,2).setValue("Hello World");

 // for文を入れ子にしている。
 // 「let i」の方のループが1 -> 11までの10回  
 // 「let j」の方のループも1 -> 11までの10回
 // 10 * 10 = 100回処理がループする
 let l = 1
 for (let i = 1; i < 11; i++) {
   for (let j = 1; j < 11; j++) {

     // getRange・・・取得したシートの「i」行目かつ「j」列目のセルを取得する
     // setValue・・・取得したセルに「l」の値を出力する
     sheet.getRange(i,j).setValue(l);

     // lの値を1増加させる
     l = l + 1;


   }
 }

// サンプル用のJSONデータ
 let aboutme = {
"ドメイン": "真核生物 Eukaryota",
"界": "動物界 Animalia",
"亜界": "真正後生動物亜界 Eumetazoa",
"上門": "新口動物上門 Deuterostomia",
"門": "脊索動物門 Chordata",
"亜門": "脊椎動物亜門 Vertebrata",
"上綱": "四肢動物上綱 Tetrapoda",
"綱": "哺乳綱 Mammalia",
"下綱": "真獣下綱 Eutheria",
"上目": "真主齧上目 Euarchontoglires",
"大目": "真主獣大目 Euarchonta",
"目": "霊長目 Primate",
"亜目": "直鼻猿亜目 Haplorrhini",
"下目": "真猿型下目 Simiiformes",
"小目": "狭鼻小目 Catarrhini",
"上科": "ヒト上科 Hominoidea",
"科": "ヒト科 Hominidae",
"亜科": "ヒト亜科 Homininae",
"族": "ヒト族 Hominini",
"亜族": "ヒト亜族 Hominina",
"属": "ヒト属 Homo",
"種": "ヒト H. sapiens",
"国籍": "日本",
"所属": "株式会社ABN",
"部署": "技術開発部",
"担当": "バックエンド",
"名前":"山本"
}

 // console.log・・・GASを実行したときのコンソールに、引数で渡された値を出力する

 // Object.keys・・・引数で渡されたJSONデータのキーを配列として返す
 // .length・・・配列の要素数
 console.log(Object.keys(aboutme).length);

 // [0]・・・配列の「0」番目の要素
 console.log(Object.keys(aboutme)[0]);

 // aboutme["ドメイン"]・・・キー「ドメイン」に紐づくJSONデータの値
 console.log(aboutme["ドメイン"]);

 // キー配列の「0」番目の要素の値に紐づく、JSONデータの値
 console.log(aboutme[Object.keys(aboutme)[0]]);

 // JSONデータのキーと値を全て出力する
 // キーは「1」列目に出力する
 // 値はは「2」列目に出力する
 // Object.keys(aboutme).length + 1・・・1 -> 要素数 だとiの値がが要素数と同じ値のときに処理が実行されなくなってしまうので、要素数+1としている
 for (let i = 1; i < Object.keys(aboutme).length + 1; i++) {
   // i-1・・・iの初期値が1だとJSONデータの0番目の要素が出力されなくなってしまうので、「i-1」番目の値を出力している
   sheet.getRange(i,1).setValue(Object.keys(aboutme)[i-1]);
   sheet.getRange(i,2).setValue(aboutme[Object.keys(aboutme)[i-1]]);
 }

}


ハンズオンの最後の課題「ガチのJSONを出力してみる」で利用した、株式会社ABNのnote記事一覧のJSONデータ

https://note.com/api/v2/creators/abn/contents?kind=note


この記事が気に入ったらサポートをしてみませんか?