はじめに
組み込みエンジニアがGoogle Apps Script(以下GAS)を始めて学んでみました。
2023/1/18: 1.0.0:基本文法追加
目次
GASとは?
Googleが提供する各種サービスの自動化/連携を行うためのスクリプト作成ツール。
どんなことができるか?
1. googleフォームの回答をメールに自動送信する。
2. カレンダー情報をslackに通知する。
3. youtubeの情報を自動で収集(スクレイピング)
どうやって使うか?
1. googleスプレッドシート > 拡張機能 > Apps Script
2. スクリプトを書く
3. 保存(cntl+s)
4. 実行(cntl+r)
基本文法
コンソール表示
function myFunction() {
console.log("hello" + 999 + 'world');
}
実行結果
22:10:14 情報 hello999world
変数・定数
function myFunction() {
var a; //varとletどちらでもよい
let b = 2/3*7; //自動で浮動小数点数型となるみたい
const buf = "test"//constは定数
console.log(a);
console.log(b);
console.log(buf);
}
実行結果
22:17:37 情報 undefined
22:17:37 情報 4.666666666666666
22:17:37 情報 test
配列
function myFunction() {
let bufs = ["hello","world"];
console.log(bufs[0] + bufs[1]);
console.log(bufs.join(" new ")); //メソッドが色々とそろっている
console.log(bufs.reverse().toString());
}
実行結果
22:33:21 情報 helloworld
22:33:21 情報 hello new world
22:33:21 情報 world,hello
オブジェクト(連想配列)
function myFunction() {
let age = {
"yamada":15,
"suzuki":43,
"tanaka":26,
}
console.log(age.suzuki);
console.log(age.tanaka);
}
実行結果
22:38:02 情報 43
22:38:02 情報 26
制御構文(if/for)
function seigyokoubun() {
let nums = [10, 20, 30, 40, 50];
for (let i = 0; i < nums.length; i++) {
if (i == 2)
console.log(nums[i]);
}
for (let i in nums) { //配列の長さの取得が不要
if (i == 1)
console.log(nums[i]);
}
for (let num of nums) { //配列の要素を取得
if (num == 50)
console.log(num);
}
}
実行結果
22:50:43 情報 30
22:50:43 情報 20
22:50:43 情報 50
関数
function factorial(num) {
let ret = 1;
while (num) {
ret *= num;
num--;
}
return ret;
}
//アロー関数(以下)の記法も可能
//const factorial = (num) =>{
function main() {
//階乗を計算する関数呼び出し
console.log(factorial(3));
console.log(factorial(num=7));
}
実行結果
22:56:17 情報 6
22:56:17 情報 5040
メール送信
Gmail Serviceを活用する。
let to = `test@gmail.com`
let subject = `ここには件名が入ります`
let body =
`いつもお世話になっております。
○○株式会社の○○です。
内容
以上、よろしくお願いいたします。`
GmailApp.sendEmail(to, subject, body);
日時操作
let day = new Date();
day.setDate(day.getDate()+1); //1日後
day.setMonth(date.getMonth()+1); //1ヶ月後
day.setFullYear(day.getFullYear()-1); //1年前
let YYYYMMDD = Utilities.formatDate(day, 'JST', 'yyyy年MM月dd日'); //2023年01月23日形式
空白改行削除
function removespace(str) {
return str.replace(/[\r\n]+/g, "").replace(" ", "").replace(" ", "");
}
参考
まとめ
基本文法は他の言語とは変わらない。
変数のデータ型を意識せずに書けたりするので、初心者にはとっつきやすい言語だと感じた。