HiÐΞClassic

GAS : Line にコメントして、スプレッドシートに記録

SHOGAKU
a year ago
Lineデベロッパースプレッドシード & GASGAS補足実装ステップ注意点結果こんな感じ

GAS : Line にコメントして、スプレッドシートに記録する。

3Dプリンターの材料消費をLineで記録するほうが楽そうなので、実行。

以下などを参考に
https://prtn-life.com/blog/gas-linebot-regist-spreadsheet

備忘録

Lineデベロッパー

https://developers.line.biz/ja/

  • プロバイダー作成、新規チャネル作成
  • Webhookの利用だけ、ONにした
  • Webhook URL は、GASの設定後。

スプレッドシード & GAS

https://docs.google.com/spreadsheets/u/0/

  • 新規作成
  • 拡張機能からApp script

GAS

// LINE APIのアクセストークン
const ACCESS_TOKEN = 'あなたのト-クン';

// スプレッドシートのID
const SHEET_ID = 'URLに書いてあるやつ';

function doPost(e) {
  try {
    var json = JSON.parse(e.postData.contents);
    var replyToken = json.events[0].replyToken;

    // メッセージを改行で分割
    var userMessage = json.events[0].message.text;
    var data = userMessage.split(/\r\n|\n/);

    // メッセージの形式をチェック
    if (data.length === 3) {
      var today = Utilities.formatDate(new Date(), 'Asia/Tokyo', 'yyyy/MM/dd');
      var msg = registerData(today, data[0], data[1], data[2]);
      sendReply(replyToken, msg);
    } else {
      sendReply(replyToken, "メッセージの形式が不正です。'作品名\nフィラメントの種類\n使用量'の形式で送信してください。");
    }
  } catch (error) {
    console.error('Error in doPost: ' + error.message);
    sendReply(replyToken, "エラーが発生しました: " + error.message);
  }
}


// registerData関数とsendReply関数は以前のままです...


function registerData(date, project, filament, amount) {
  var spreadsheet = SpreadsheetApp.openById(SHEET_ID);
  var sheet = spreadsheet.getSheetByName('フィラメント'); // シート名を「フィラメント」に変更
  var lastRow = sheet.getLastRow();
  sheet.getRange(lastRow + 1, 1).setValue(date);
  sheet.getRange(lastRow + 1, 2).setValue(project);
  sheet.getRange(lastRow + 1, 3).setValue(filament);
  sheet.getRange(lastRow + 1, 4).setValue(amount);
  return "データを記録しました: " + date + ", " + project + ", " + filament + ", " + amount;
}


function sendReply(replyToken, messageText) {
  var url = 'https://api.line.me/v2/bot/message/reply';
  var headers = {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer ' + ACCESS_TOKEN
  };
  var payload = JSON.stringify({
    replyToken: replyToken,
    messages: [{ type: 'text', text: messageText }]
  });

  var options = {
    'method' : 'post',
    'headers' : headers,
    'payload' : payload
  };

  UrlFetchApp.fetch(url, options);
}
  • デプロイで、Webhook URLで使うURL取得

  • LineデベロッパーのWebhook URLへ記入

  • 次のユーザーとして実行 自分

  • アクセスできるユーザー 全員

  • 友達追加して実行


補足

Google Apps Script(GAS)でスクリプトをデプロイする際に、「次のユーザーとして実行: 自分」と「アクセスできるユーザー: 全員」を設定することは、LINE Botを介して受け取ったデータをスプレッドシートに記録するための共有設定を意味します。この設定により、スクリプトはあなたの権限で実行され、LINEからのメッセージを受け取ることができる任意のユーザー(LINEの友達追加されたユーザー)がスプレッドシートにデータを送信できるようになります。

実装ステップ

  1. Google Apps Scriptのエディターでスクリプトを開く:スプレッドシートに紐づけられたスクリプトエディターを開きます。
  2. 「公開」メニューから「ウェブアプリケーションとして導入」を選択:スクリプトをウェブアプリケーションとして公開するオプションを選択します。
  3. 実行ユーザーの設定
    • **「次のユーザーとして実行」のドロップダウンメニューで「自分」**を選択します。これにより、スクリプトはあなたのGoogleアカウントの権限で実行されます。
    • **「アクセスできるユーザー」のドロップダウンメニューで「全員」または「全員(匿名ユーザーを含む)」**を選択します。これにより、LINE Botを使用しているすべてのユーザーがスクリプトにアクセスできるようになります。
  4. 更新をデプロイ:設定を確認し、新しいバージョンの説明を付けてデプロイを実行します。
  5. Webhook URLの取得:デプロイ後に表示されるWebhook URLをコピーして、LINE DevelopersコンソールのWebhook設定にペーストします。

注意点

  • セキュリティ:「アクセスできるユーザー: 全員」を設定する場合、スクリプトが公開されることになります。不正アクセスを防ぐために、スクリプト内で適切な検証を行い、承認されたリクエストのみを処理するようにしてください。
  • クォータ制限:Google Apps Scriptには実行時間や使用できるサービスの呼び出し回数に制限があります。大量のユーザーがいる場合は、これらの制限に注意してください。

この設定により、あなたが管理するスプレッドシートに、LINE経由で簡単にデータを追加できるようになります。


結果こんな感じ

  • LINE

  • スプレッドシード


以上


コメント
いいね
投げ銭
最新順
人気順
SHOGAKU
a year ago
コメント
いいね
投げ銭
最新順
人気順
トピック
アプリ

Astar Network

DFINITY / ICP

NFT

DAO

DeFi

L2

メタバース

BCG

仮想通貨 / クリプト

ブロックチェーン別

プロジェクト

目次
Tweet
ログイン