【初心者向けGAS】Google Apps Scriptで別の関数を呼び出すfunctionの書き方

みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。

Google Apps ScriptでBotを作りながらその基本を学ぶシリーズをお届けしています。

前回の記事はコチラ。

【初心者向けGAS】Chatworkのマイチャットにメッセージを送る最も簡単な例
初心者向けGoogle Apps Scriptのシリーズとして、ChatworkのBotを作成する方法をお伝えしています。今回は、超簡単な例としてマイチャットにメッセージを送る方法と、APIトークンの取得の方法です。

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」を使っていますので、まだ追加されていない方は、以下の記事を参考に追加してくださいね。

【初心者向けGAS】面倒なことはライブラリに任せよう!その概要と追加の方法
初心者向けGoogle Apps ScriptのシリーズとしてチャットワークのBotの作り方についてお伝えしています。今回はライブラリとは何か、またその追加の仕方についてお伝えしていきます。

スプレッドシートの上から順に名言をログ出力する

もう一つスクリプトを紹介します。

コチラの記事までで完成させたものですが、スプレッドシートの上から順に名言をログ出力するというものです。

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を呼び出すのです。

別の関数を呼び出す

関数から別の関数を呼び出すときには、このように記述します。

関数名(引数1, 引数2, …)

まず、関数名に開く&閉じる括弧をつける、と。

その際に、何らかの値を任意の数だけ持たせて呼び出すことができ、それを引数と言います。

今回の場合、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の定義文は以下のような構文になります。

function 関数名(仮引数1, 仮引数2, …) {
 //何らかの処理
 return 戻り値;
}

呼び出す側の関数で引数が与えられれば、仮引数に格納されます。仮引数は、渡す引数と同じ数だけ用意してくださいね。

この仮引数は、その関数内で変数のように使用することができます。

また、return文は省略可能ですが、呼び出した関数に戻るときに、値を渡すことができます。それを戻り値と言います。

今回の例では、testMessageをベースに、関数名をsendMessageと変更して

function sendMessage(body){
  const cw = ChatWorkClient.factory({token: 'ここにAPIトークンを入力してください'});
  cw.sendMessageToMyChat(body);
}

とすれば良いです。

マイチャットに名言を送る

では、実行してみましょう。

myFunctionを3回連続で実行してみました。

GASでChatworkに名言Botを送信

このようにマイチャットに名言が送られてきて、スプレッドシートには送信した名言にTRUEが付与されますね。

GASでChatworkに送信した後のスプレッドシート

これで…Bot完成ですね!

まとめ

以上、スプレッドシートの名言をChatworkのマイチャットに送信するスクリプトを作成しました。

またその際の、別の関数を呼び出すfunctionの書き方、また引数の受け渡し方について解説しました。

機能を分けておくとわかりやすいですし、再利用しやすいので、ぜひ別のfunctionを作って部品化するテクニックも使ってくださいね。

次回は、時限式トリガーを使って、特定の時間に自動で実行させていきたいと思います。

【初心者向けGAS】時限式のイベントトリガーを設置して決まった時刻にBotを送信する方法
初心者向けGoogle Apps Scriptのシリーズとして、名言Botの作成の方法をお伝えしています。今回は、時限式のイベントトリガーを設置して決まった時刻にChatworkにBot送信する方法です。

どうぞお楽しみに!

連載目次:超初心者向けGASでBotを作りながら基礎を学ぶ

Google Apps Script(GAS)をはじめるためのメリットは山程ありますが、何を作ったらいいの?と悩んでしまうこともありますよね。そんな時に、おすすめしたいのが「Bot」の作成です。このシリーズでは、超初心者向けにGASでBotを作る方法を題材としながら、GASプログラミングの一通りの流れと書き方について学んでいきます。
  1. 【初心者向けGAS】本当の最初の一歩!スクリプトエディタでプロジェクトを開く
  2. 【初心者向けGAS】はじめてのスクリプトを作成し、保存し、実行する
  3. 【初心者向けGAS】プログラミングに必須の変数&定数の使い方とデータ型について
  4. 【初心者向けGAS】ログを表示するconsole.logの使い方とテンプレート文字列
  5. 【初心者向けGAS】スクリプト実行時の「承認」でびっくりしないために
  6. 【初心者向けGAS】Spreadsheetサービスの「オブジェクト」の基礎の基礎を知ろう
  7. 【初心者向けGAS】スプレッドシートのシートを取得する2つの方法
  8. 【初心者向けGAS】スプレッドシートのセル・セル範囲とその値を取得する方法
  9. 【初心者向けGAS】for文を使ったスプレッドシートの繰り返しの超基本
  10. 【初心者向けGAS】条件分岐をするif文の使い方の超基本
  11. 【初心者向けGAS】スプレッドシートのセルに値を入力する基礎の基礎
  12. 【初心者向けGAS】条件に応じてループを制御する2つの方法~break文とwhile文~
  13. 【初心者向けGAS】スプレッドシートのセル範囲を行数・列数を使って取得する
  14. 【初心者向けGAS】スプレッドシートのセル範囲をクリアするいくつかの方法
  15. 【初心者向けGAS】Google Apps ScriptでWeb APIを活用するための基礎知識
  16. 【初心者向けGAS】面倒なことはライブラリに任せよう!その概要と追加の方法
  17. 【初心者向けGAS】Chatworkのマイチャットにメッセージを送る最も簡単な例
  18. 【初心者向けGAS】Google Apps Scriptで別の関数を呼び出すfunctionの書き方
  19. 【初心者向けGAS】時限式のイベントトリガーを設置して決まった時刻にBotを送信する方法
  20. 【初心者向けGAS】プロパティストアの概要とスクリプトプロパティの編集方法
  21. 【初心者向けGAS】スクリプトプロパティを操作してそのデータを取り出す方法
  22. 【初心者向けGAS】スプレッドシートのセル範囲の値を二次元配列として取得して取り扱う方法
  23. 【初心者向けGAS】Chatworkのメッセージ記法でBot送信するメッセージを装飾する方法
  24. 【初心者向けGAS】Google Apps Scriptのドキュメンテーションコメントの書き方
タイトルとURLをコピーしました