【GAS入門】ウェブアプリ利用とトリガー設定
新入社員の早岐です。
プリキュア、ARB、川釣り(先日、すっぽんを釣りました。捌いて祖母と一緒に食べる予定です)が好きな新人です。
今回はGASでのウェブアプリとしての利用とトリガーの利用を書いていきます。
具体的な例として以下の2つを簡単に紹介します。
- 翻訳機能をウェブアプリとして公開し、元の言語と翻訳先の言語をGoogleスプレッドシート(以下GSS)に記録する
- Googleカレンダーと連携して、Webhookを利用しSNSに通知する
GASでGoogle翻訳→GSS
Googole翻訳をする
GSSのメニューバー→拡張機能→App Scriptを選択をします。
エディタが開くため、そこに簡単なデモとして以下のコードを書きます。もちろんお好きなようにアレンジしても構いません。
functiontransTest() {
//翻訳したい文章
var plain = "ちょっと待って、結婚式と言ったらフランス料理でしょ";
//翻訳先の言語 (ISO 639) var transTo = "en";
//翻訳を実施 var translated = LanguageApp.translate(plain,'',transTo);
//出力 console.log(translated); }
コードの記述が終わったら、画像のマーカー部分のように
「transTest
」を選択して、実行を行います。
実行ログに翻訳した文章が出てきます。
結果をGSSに記録する
console.log(translated);
の下に以下の2文を付け足します。
const sheet= SpreadsheetApp.getActiveSheet();
sheet.appendRow([plain,transTo,translated,"翻訳が完了しました"]);
保存して、再度実行を行います。
実行後にGSSを見てみると変化が確認できると思います。
GETする情報をGASで定義する
今回は「翻訳する文章」と「翻訳先言語」を受け取り、翻訳後にGSSに記録をします。ウェブアプリとして公開を行うので、LINEやSlackなどのWebhookを利用して翻訳文を送ることも可能です。以下はDiscordでの例です。
今回は簡単にアドレスバーに入力を行い、確かめていきます。
以下のコードの記述をします。
const doGet(e)=>
{
//受け取る文章
var plain = e.parameter.plainText;
//翻訳先の言語コード
var transTo = e.parameter.transTo;
var translated = LanguageApp.translate(plain,'',transTo);
const sheet= SpreadsheetApp.getActiveSheet();
sheet.appendRow([plain,transTo,translated,"翻訳しました"]);
}
ウェブアプリとしてデプロイする
右上のデプロイから新しいデプロイを選択します。
種類を選択→ウェブアプリ
画像のように設定をし、デプロイボタンを押します。初めて行う場合は、セキュリティチェックが出ます。ご自身の判断に従って行ってください。
手続きを進めると、デプロイが更新されるため、そこに出てきたURLをコピーします。このURLは絶対に他人に教えないようにします。以下はURLの例です。
https://script.google.com/macros/この部分は人によって違います/exec
バージョン1となっているように、コードを新しくした際には新しいデプロイを作成しましょう。URLは古いもののまま実行をすることになります。しかし設定によっては不要ですが、今回は割愛します。
試してみる
サーバーサイドで通信を行い、LineやDiscordといったサービスに送ることも可能ですが、簡単に試せるようにアドレスバーに直接入力をします。
plainTextとtransToに情報を渡してあげます
https://script.google.com/macros/この部分は人によって違います/exec?plainText=ちょっと待って、結婚式と言ったらフランス料理でしょ!?&transTo=en
上記のようにご自身の使いたい形にしたURLを検索バーに書き込み、検索を行います。
検索画面では「スクリプトが完了しましたが、何も返されませんでした。」と表示がされますが、スプレッドシートを確認すると以下のようになるかと思います。
GASでGoogleカレンダーの情報取得
Googleカレンダーの連携
予定の入っているGoogleカレンダーを開きます。その後、カレンダーの結合にある「カレンダーID」をコピーします。
カレンダーの予定をみて、予定がある場合はWebhookを利用してSNSに送信をするサンプルコードになります。
const webhook ="LINEやDISCORDのwebhook";
function sendSchedule()
{
//カレンダー指定
var myCals=CalendarApp.getCalendarById('Googleカレンダーのid ~@group.calendar.google.com');
//本日のイベントを取得
var myEvents=myCals.getEventsForDay(new Date());
//イベントは配列
if (myEvents.length < 1) {
//イベントがない場合
}else{
//複数の場合の処理
messages = "今日の予定は"+myEvents[0].getTitle();
}
if( myEvents.length >= 1){
//LINEやSlack、Discord等のWebhookに合わせて変えてください
const payload = {
username: "翻訳文章送信BOT",
content: translated,
};
UrlFetchApp.fetch(webhook, {
method: "post",
contentType: "application/json",
payload: JSON.stringify(payload),
});
}
}
上はカレンダーをチェックして、用事があればwebhookを利用して送信するサンプルコードです。
トリガーを設定し、関数を動かす
ウェブアプリとして公開をして、毎日URLをたたくような方法でも問題はありませんが、GASにはトリガーが設定できるため今回はそちらを利用します。
サイドメニュー→目覚ましマーク→(画面右下の)トリガーを追加
と進めるとトリガーが出てきます。画像は私の設定例です。
トリガーを設定すると、自動的に関数を実行してくれます。
私の開発例では以下のようになります。
次回のブログ担当になった際には、pythonで暗号プログラミングでもかければいいなあと思っています。またプリキュア映画の季節なので上司を誘って映画を見に行く予定です!!!絶対に連れていきます