見出し画像

GASでラインのリマインダーを設定する方法(超シンプルwebhook不要)



準備

  1. ラインのBOTのアカウントを用意しておく

  2. google formでスプレッドシートに名前/日にちを登録する仕組みを作成

まあこの二つは頑張ってください
ググればできます!たぶん

方針

スプレッドシートの登録されているデータをフィルター関数で絞り込む
GASで読み込んでメッセージを作成
送信する相手(ユーザー/グループ)のIDを取得
メッセージを送信するスクリプトを追加
トリガーで定期的に実行する

filter関数を使った絞り込み

当日のデータだけ表示する列を作る

=FILTER(データが登録されている範囲, 日付が入っている列 = TODAY())

これで条件に当てはまるデータがあれば絞り込みできます!
条件に当てはまるデータがなければ#N/Aと表示されます

GASで読み込んでメッセージを作成

let activeSpreadSheet = SpreadsheetApp.getActiveSpreadsheet();
  let sheet = activeSpreadSheet.getSheetByName('タブ名に置き換えてください');
  var lastRow = sheet.getRange(1, 1).getNextDataCell(SpreadsheetApp.Direction.DOWN).getRowIndex();
  let nameList = ""
  var value = sheet.getRange(1,1).getValue();
  if (value ==='#N/A'){
    ;
  }else {
  for (let i=1; i<=lastRow; i++) {
    if (sheet.getRange(i,1).getValue()===""){
      break
    }else{
      nameList = nameList + "\n" + sheet.getRange(i,1).getValue();
    }
  }
  let message = nameList;
  console.log(message)

ここまでで関数の実行ボタンを押せばメッセージが表示されます
バグってたらchatGPTに聞いてください

送信する相手(ユーザー/グループ)のIDを取得

https://cyuraharuto.com/gas-line-gid-get/

これを参考にやってみましょう
注意点

  1. デプロイは全てに設定(じゃないとバグる)

  2. BOTに実際にメッセージを送る必要がある

メッセージを送信するスクリプトを追加

const url = 'https://api.line.me/v2/bot/message/push';
  const token = 'アクセストークン調べて入れる'; //チャネルアクセストークン

  const payload = {
    to: 'さっき取得したIDはここにいれる', //ユーザーID
    messages: [
      { type: 'text', text: message }
    ]
  };

  const params = {
    method: 'post',
    contentType: 'application/json',
    headers: {
      Authorization: 'Bearer ' + token
    },
    payload: JSON.stringify(payload)
  };

  UrlFetchApp.fetch(url, params);
  }

これは正直あんまり理解しなくてもいける!
アクセストークンとIDだけ入れ替えればOK

トリガーで定期的に実行する

これもそんなに特別なことはなく…
左側の時計のマーククリックしてあとは設定ぽちぽちすればできます

おしまい

超シンプルだしたぶんみんなできるはず
ど素人なのでコード汚くても多めに見てください
ちゃんと動くから

この記事が気に入ったらサポートをしてみませんか?