Skip to content

Amy-Taker/slackReplyer_GAS

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 

Repository files navigation

SlackReplyer_GAS

GPTとのやりとりをGoogle App Scriptを経由してSlack Botで行おうと思ったら,ドツボにハマった話をメモ.

GASのプリントアウト出力問題

課題: Logger.logConsole.logを行っても,doPost関数はエラーログを吐かない

解決: Spread Sheetにログを吐くようにメソッドを追加.Kotlinと同様のPrint形式を採用.

function sslog(tag, msg){
  const sheetForLog = SpreadsheetApp.openById(SPREAD_SHEET_ID).getSheets()[0]; //sheetIDはとりあえず0
  sheetForLog.appendRow([ // わかりやすいように1列目には現在の日時を書き込む
    Utilities.formatDate(new Date(), 'JST', 'yyyy/MM/dd HH:mm:ss'), 
    tag,
    JSON.stringify(msg)
  ]);
}

参考

Slack多重トリガ問題

課題: なぜか1度のメッセージ送信に対して複数回のトリガが発生する問題

解決: client_msg_idをcacheに蓄積し,一度送信した履歴があればスキップするよう実装する

if (slackEvent.event.client_msg_id == null) { // NULL
  sslog("Retry", "Return; NULL");
  return;
} else if (cache.get(slackEvent.event.client_msg_id) == 'done') { // キャッシュからの取得; get(キー)
  sslog("Retry", "Return; client_msg_id is 'done'");
  return;// ContentService.createTextOutput(); // 新しい TextOutput オブジェクトを作成
} else {
  sslog("Retry", "Continue; This is First Time");
  cache.put(slackEvent.event.client_msg_id, 'done', 600); // キャッシュへの追加; put(キー, 値, 保持期限(秒))
}

参考

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors