3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

GoogleフォームとLINEを連動させたアプリを作ってみる(最終回・仕上げ編)

Posted at

こんにちは。船井総研デジタルのいっちーです。
前回の記事では、Google Apps ScriptのスクリプトからLINEメッセージを送り、手元の端末でも受信できることを確認しました。

今回は、フォームとスクリプトを連動させて、最後の仕上げをしていきたいと思います。

もう一度、最初の構成図を見てみましょう。本稿では、赤枠で示した部分を作っていきます。
image.png

回答用のフォームを作る

まずは回答用のフォームを作っていきましょう。Googleフォームからフォームを新規作成します。
image.png

フォームの内容は何でもいいので、とりあえず1問だけ質問を作っておきます。フォームが出来上がったら、「送信」を押下します。
image.png

フォーム共有用のURLを控えておきましょう。URLを控えたら、「フォームを送信」のモーダルを閉じて下さい。
image.png

次に、フォームの回答を収集するためのスプレッドシートを作成します。「回答」タブから「スプレッドシートにリンク」を押下します。
image.png

「新しいスプレッドシートを作成」を選択して「作成」を押下します。
image.png

スプレッドシートが開くので「拡張機能」から「Apps Script」を選択します。
image.png

メッセージ送信のスクリプトを作る

スクリプト作成

Google Apps Scriptのエディタに、下記のコードを入力します。今回は元々作られているmyFunctionは削除して、スクリプト名もそれっぽいものを付けておきましょう。

LineSender.gs
function sendLineMessage(msg) {
  var accessToken = '【前々回の記事で作成したアクセストークン】';
  var url = 'https://api.line.me/v2/bot/message/push';
  var headers = {
    Authorization: 'Bearer ' + accessToken,
    'Content-Type': 'application/json',
  };
  var payload = {
    to: '【前々回の記事で作成したユーザーID】',
    messages: [
      {
        type: 'text',
        text: msg,
      },
    ],
  };
  var options = {
    method: 'post',
    headers: headers,
    payload: JSON.stringify(payload),
  };
  var response = UrlFetchApp.fetch(url, options);
  Logger.log(response.getContentText());
}

function sendRemindMessage() {
  var msg =
    'こんにちは!フォームの入力をお願いします!\n【作成したフォームのURL】';
  sendLineMessage(msg);
}

function sendResponseMessage() {
  var msg = 'ありがとうございます。登録を確認しました!';
  sendLineMessage(msg);
}

image.png

動作確認

スクリプトを保存したら、動作確認してみましょう。sendRemindMessageを選択して、「実行」を押下します。
image.png

実行権限を求めるようなダイアログが出た場合は、「許可する」方向に倒れるように操作してください。以降も権限を求められた場合は、同様に権限を付与していきます。

image.png

実行ログが表示されました。sendResponseMessageも同様に実行します。
image.png

端末を確認してみましょう。
image.png

メッセージ着信を確認できました。返信用の関数を直接起動したので、フォームの回答をしていないのに「登録を確認しました!」と、ちょっと奇妙なことになっています。

トリガーを作る

このアプリは、sendRemindMessageを定時起動し、フォームの送信時にsendResponseMessageを都度起動します。これを実現するため、トリガーの設定をしていきましょう。

トリガー作成

サイドメニューから「トリガー」タブを選択します。
image.png

「トリガー作成」を押下します。
image.png

定時起動のトリガーを作成します。sendRemindMessage関数に、「時間主導型」「日付ベース」「午前8時~9時」を設定し、「保存」を押下します。
image.png

同様に、都度起動のトリガーを作成します。sendResponseMessage関数に、「スプレッドシートから」「フォーム送信時」を設定し、「保存」を押下します。
image.png

これで、必要なトリガーが作成されました。
image.png

動作確認

時間起動で設定したトリガーは時間が来るまで確認できませんが、都度起動のトリガーはすぐに動作確認できます。先程受信したメッセージのフォームURLをタップしてみましょう。
image.png

フォームが開くので、必要事項を入力して「送信」をタップします。
image.png
image.png

フォーム送信後、数秒でLINE着信の通知が表示されました。
image.png

LINE本体も確認してみましょう。
image.png

メッセージ着信が確認できました。スクリプトの実行記録も見てみましょう。
image.png

トリガー実行したスクリプトが正常終了している記録が確認できます。

翌朝見てみると、ちゃんと定時起動のメッセージも着信していました。
image.png

まとめ

これまでの手順で、トリガーからGoogle Apps Scriptを起動し、LINE Messaging APIを使ってLINEメッセージを送る仕組みを構築できました。自動的にメッセージを送る仕組みは色々と応用ができると思いますので、本記事が面白いものを作るヒントになれば幸いです。
今回の連載は、これにて終了です。最後までお読み頂き、ありがとうございました。

それではまた。

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?