みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。
Google Apps ScriptでBotを作りながらその基本を学ぶシリーズをお届けしています。
前回の記事はコチラ。
GASでChatwork APIを操作してマイチャットにメッセージを送る方法についてお伝えしました。
もう、あとちょっとですね!
前回はテストで「テストメッセージ」と送っただけなので、今回はちゃんとBotとして名言を送るように仕込んでいきます。
その際に、関数から別の関数を呼び出すという方法を使ってみましょう。
では、Google Apps Scriptで別の関数を呼び出すfunctionの書き方です。
では、行ってみましょう!
これまでのおさらい
Chatworkのマイチャットにメッセージを送る部分
まず、前回お伝えしたのが、Chatwork APIを使ってメッセージを送るという部分で、スクリプトは以下の通りでした。
function testMessage(){ const cw = ChatWorkClient.factory({token: 'ここにAPIトークンを入力してください'}); const body = 'テストメッセージ'; cw.sendMessageToMyChat(body); }
ここで、送信するメッセージbodyを名言にしていけばよいわけですね。
あ、ちなみにライブラリ「ChatWorkClient for Google Apps Script」を使っていますので、まだ追加されていない方は、以下の記事を参考に追加してくださいね。
スプレッドシートの上から順に名言をログ出力する
もう一つスクリプトを紹介します。
コチラの記事までで完成させたものですが、スプレッドシートの上から順に名言をログ出力するというものです。
function myFunction() { const sheet = SpreadsheetApp.getActiveSheet(); const lastRow = sheet.getLastRow(); for(let i = 2; i <= lastRow; i++) { if(!sheet.getRange(i, 4).getValue()){ console.log(sheet.getRange(i, 1).getValue()); sheet.getRange(i, 4).setValue(true); if(i >= lastRow) { sheet.getRange(2, 4, lastRow - 1).clearContent(); } break; } } }
こちらのスクリプトの7行目がconsole.logによるログ出力になっていますので、この部分を前述のメッセージ送信する処理に差し替えていけばよいわけですね。
関数の呼び出し
myFunctionの7行目に、testMessageの処理をボコーンとコピペして差し込んでもいいのですが、ちょっとここは工夫して楽な方法をとりましょう。
testMessageを改良したメッセージを送信する別の関数sendMessageを呼び出すのです。
別の関数を呼び出す
関数から別の関数を呼び出すときには、このように記述します。
まず、関数名に開く&閉じる括弧をつける、と。
その際に、何らかの値を任意の数だけ持たせて呼び出すことができ、それを引数と言います。
今回の場合、Chatworkに送信するメッセージを文字列bodyとして渡して、関数sendMessageにわたすのであれば前述のスクリプトの7行目を以下に変更すれば良いですね。
const body = sheet.getRange(i, 1).getValue(); sendMessage(body);
全体として
function myFunction() { const sheet = SpreadsheetApp.getActiveSheet(); const lastRow = sheet.getLastRow(); for(let i = 2; i <= lastRow; i++) { if(!sheet.getRange(i, 4).getValue()){ const body = sheet.getRange(i, 1).getValue(); sendMessage(body); sheet.getRange(i, 4).setValue(true); if(i >= lastRow) { sheet.getRange(2, 4, lastRow - 1).clearContent(); } break; } } }
とすればOKです。
呼び出される関数の定義
呼び出される側の関数数sendMessageですが、この定義をする必要があります。
記述の方法はですが、引数を受け取る必要がありますので、その分も踏まえると、functionの定義文は以下のような構文になります。
//何らかの処理
return 戻り値;
}
呼び出す側の関数で引数が与えられれば、仮引数に格納されます。仮引数は、渡す引数と同じ数だけ用意してくださいね。
この仮引数は、その関数内で変数のように使用することができます。
また、return文は省略可能ですが、呼び出した関数に戻るときに、値を渡すことができます。それを戻り値と言います。
今回の例では、testMessageをベースに、関数名をsendMessageと変更して
function sendMessage(body){ const cw = ChatWorkClient.factory({token: 'ここにAPIトークンを入力してください'}); cw.sendMessageToMyChat(body); }
とすれば良いです。
マイチャットに名言を送る
では、実行してみましょう。
myFunctionを3回連続で実行してみました。
このようにマイチャットに名言が送られてきて、スプレッドシートには送信した名言にTRUEが付与されますね。
これで…Bot完成ですね!
まとめ
以上、スプレッドシートの名言をChatworkのマイチャットに送信するスクリプトを作成しました。
またその際の、別の関数を呼び出すfunctionの書き方、また引数の受け渡し方について解説しました。
機能を分けておくとわかりやすいですし、再利用しやすいので、ぜひ別のfunctionを作って部品化するテクニックも使ってくださいね。
次回は、時限式トリガーを使って、特定の時間に自動で実行させていきたいと思います。
どうぞお楽しみに!
連載目次:超初心者向けGASでBotを作りながら基礎を学ぶ
Google Apps Script(GAS)をはじめるためのメリットは山程ありますが、何を作ったらいいの?と悩んでしまうこともありますよね。そんな時に、おすすめしたいのが「Bot」の作成です。このシリーズでは、超初心者向けにGASでBotを作る方法を題材としながら、GASプログラミングの一通りの流れと書き方について学んでいきます。- 【初心者向けGAS】本当の最初の一歩!スクリプトエディタでプロジェクトを開く
- 【初心者向けGAS】はじめてのスクリプトを作成し、保存し、実行する
- 【初心者向けGAS】プログラミングに必須の変数&定数の使い方とデータ型について
- 【初心者向けGAS】ログを表示するconsole.logの使い方とテンプレート文字列
- 【初心者向けGAS】スクリプト実行時の「承認」でびっくりしないために
- 【初心者向けGAS】Spreadsheetサービスの「オブジェクト」の基礎の基礎を知ろう
- 【初心者向けGAS】スプレッドシートのシートを取得する2つの方法
- 【初心者向けGAS】スプレッドシートのセル・セル範囲とその値を取得する方法
- 【初心者向けGAS】for文を使ったスプレッドシートの繰り返しの超基本
- 【初心者向けGAS】条件分岐をするif文の使い方の超基本
- 【初心者向けGAS】スプレッドシートのセルに値を入力する基礎の基礎
- 【初心者向けGAS】条件に応じてループを制御する2つの方法~break文とwhile文~
- 【初心者向けGAS】スプレッドシートのセル範囲を行数・列数を使って取得する
- 【初心者向けGAS】スプレッドシートのセル範囲をクリアするいくつかの方法
- 【初心者向けGAS】Google Apps ScriptでWeb APIを活用するための基礎知識
- 【初心者向けGAS】面倒なことはライブラリに任せよう!その概要と追加の方法
- 【初心者向けGAS】Chatworkのマイチャットにメッセージを送る最も簡単な例
- 【初心者向けGAS】Google Apps Scriptで別の関数を呼び出すfunctionの書き方
- 【初心者向けGAS】時限式のイベントトリガーを設置して決まった時刻にBotを送信する方法
- 【初心者向けGAS】プロパティストアの概要とスクリプトプロパティの編集方法
- 【初心者向けGAS】スクリプトプロパティを操作してそのデータを取り出す方法
- 【初心者向けGAS】スプレッドシートのセル範囲の値を二次元配列として取得して取り扱う方法
- 【初心者向けGAS】Chatworkのメッセージ記法でBot送信するメッセージを装飾する方法
- 【初心者向けGAS】Google Apps Scriptのドキュメンテーションコメントの書き方