試行錯誤ダイアリー

新卒エンジニアが日々の技術的な学び,働き方,日々感じたこと等を書きます

Google Apps ScriptとSlack 連携でのエラー色々

スプレッドシートで管理して GAS (google apps script)で 必要に応じてSlackにポストするってことをしようとしたときに 起こった色々なエラーをまとめました.

文字が無効です

google apps scriptのスクリプトエディタではパッと見 丸括弧( )の全角半角の区別が付きづらく (ほとんどわからない) 全角で括弧を入力していたせいでエラーがずっと出てた 意外と見落としがちだった

関数内のpostMessageが実行されない

これはpostMessageより前で

SlackApp.create(slack["token"]);

をしていないことが原因だった そりゃpostされないわけだ これが発生したのが編集時のトリガーで実行される関数だったから デバッグが出来ず無駄に時間を使ってしまった... こういう問題であまり時間をかけず解決できる様になりたい

onEdit関数内でSlackのpostMessageが実行されない

これがマジで一番厄介だったし,本質的に解決していない 何が起こったかというと 編集を読み込まないmyfunction()関数ではpostMessageされるのに(以下ソース)

function myFunction() {
  var slackApp = SlackApp.create(slack["token"]);
  var Message = slackApp.postMessage(
      slack["ChannelId"],
      "ok"
      ,{username : slack["userName"],icon_emoji: slack["iconEmoji"]});
}

編集をトリガーに実行されるonEdit(e)関数ではpostMessageが実行されない(以下ソース)

function onEdit(e){
   var range = e.range;//書き込みがあったセルのオブジェクト
   var slackApp = SlackApp.create(slack["token"]);
   var Message = slackApp.postMessage(
      slack["ChannelId"],
      "ok"
      ,{username : slack["userName"],icon_emoji: slack["iconEmoji"]});

というもの myfunction()では実行されるから token,チャンネル,userName, 絵文字が間違っているわけではない myfunction()のコードをそのままコピーしてきてるから半角全角問題もない しまいにはBrowser.msgBoxで直前まで実行されることは確認できてて いよいよ原因がわからない... ほとんど最初から書き直すレベルで修正したけど結局うまく実行されない 結果的にスプレッドシートを作り直して(生成し直し) 一から全部やりなおしました...(泣) 新しいスプレッドシートではなんの問題もなくスムーズに実行されたから もっと早くからやり直しておけばよかった

もし原因がわかる人がいたら教えて欲しいです(切実)

番外編

onEdit(e)関数内で

  //イベント関連の変数
  var ROW = range.getRow();
  var COLUMN = range.getColumn();
  var PCID = sheet.getRange(ROW,1).getValue();
  var STATUS = sheet.getRange(ROW,2).getValue();
  var PERSON = sheet.getRange(ROW,3).getValue();
  var START = Utilities.formatDate(sheet.getRange(ROW,4).getValue(), 'JST', 'MM月dd日');
  var END = Utilities.formatDate(sheet.getRange(ROW,5).getValue(), 'JST', 'MM月dd日');

みたいに宣言したとき それぞれのセルに文字(ここではPCID,STATUS等)が入ってないと その以下は実行されないみたい(もしかしたら自分だけかも)

google apps script めっちゃ便利なので 今後も色々理解して書いていきたい