はじめに
改悪後のアップロードになっちゃってごめんなさい(´;ω;`)ウゥゥ
きっかけ
読み飛ばしてどうぞ
Slackが9/1から改悪されたときに,こんな記事を見つけた!
お,最高!と思って読んでみたが,必要となるコードの情報はどこにもなく,隅まで読んでみると,個人blogから問い合わせをしろと書いてあった.
面倒だと思いながら問い合わせをすると,ツール利用が5,000円と来た
Yuto様
Autoworkerの山本と申します。
ご連絡いただきありがとうございました。
大変申し訳ございません。
記事で紹介しているSlackメッセージ保存・退避ツールは現在、
有償(5000円)でのご提供をさせていただいております。
月額等は発生せず、1回お支払いいただくと以後利用可能です。
※第三者へのツール(ソースコード)の再配布は禁止しておりますが、
個人並びに所属する組織内での複製利用いただくことは問題ございません。
お手数をおかけしますが、ご検討のほどお願いいいたします。
ご利用希望の場合、ご連絡いただけましたら販売ページをご案内いたします。
決済いただくと、ご提示いただいたGoogleアカウントにツールとなる
スプレッドシートの権限を付与させていただきます。
よろしくお願いいたします。
それなら…と思いネットに頼るとこんな記事を見つけた.
これだよこれこれ!と思いながら使ってみるが,エラー
確かこんなやつ
thread_not_found
そんな訳で原因調査をして,何とか使えるようにした…という事の顛末.
実装
マイナーチェンジによるアクセス権限の追加
Slack App のUser Token Scopes に以下の3つを追加してください.
- groups:history
- groups:read
- team:read
GASのコード
コピペのコードをこれに代えればOK!
もちろん元の記事通り,API-TokenとかFOLDER_IDとかは書き換えてください.
もうちょい詳しく
折角なので何をしたかもメモをしておく
エラーの原因
結論から言うと,Googleスプレッドシートに収まる文字列の上限をtsが超えた為.
これだけだと簡単そうに聞こえるけど,見つけるのには実に7hかかった.
tsとはThread Time Seconds の事.恐らくメッセージの送信時間を秒に直したもの.
昨年の段階ではスプレッドシートに入れる事の出来る有効数字を超えていなかったようだが,今現在は桁が1つ変わり,そのせいでエラーが出るようになった模様.
対処
tsを今までは1セルに記入して,その値を呼び出して使っていたが,tsの整数部分を入れる列と小数部分を入れる列を作り,分けて記入.使う時はその2つを足して使うという方法.
const COL_TIME = 6; // 差分取得用に使用するタイムスタンプ
// 中略
ts = sheet.getRange(i, COL_TIME).getValue();
const COL_TIME_INT = 6; // 差分取得用に使用するタイムスタンプ
const COL_TIME_DOUBLE = 7; // 差分取得用に使用するタイムスタンプ
// 中略
ts_int = sheet.getRange(i, COL_TIME_INT).getValue();
ts_double = sheet.getRange(i, COL_TIME_DOUBLE).getValue();
ts = ts_int + ts_double;
おわりに
気が向いたら追記します.
コメント色々下さい.
参考サイト