gmail2discord
gmailに届いたメッセージをDiscordに転送するGoogle Apps Script
https://github.com/takker99/gmail2discord
I部山岳部で使っている
実装したいこと
gmailのthreadごとにdiscordでthreadを作りたい
添付ファイルを転送したい
転送できるようなカスタムにできるようにはした
送信予約(予約投稿的なやつ)を無視する
でないと送信されるまで無限に通知してしまう
2024-05-24 10:15:31 ざっと調べてみたけど、それを検知するmethodsがGASにはなさそう
getHeader()でRFC 2822から取り出せないか?
もし送信していない状態を検知できるなら、これが使える
2024-04-10
17:41:10 おわり
https://github.com/takker99/gmail2discord/pull/2
16:16:29 Blobのuploadに苦戦している
UrlFetchApp.getRequest()で自動変換結果を確認できるみたい
https://qiita.com/asmasa/items/4fd7b5f3f3d1a33984b3#結論
Utilities.newBlob()を使う?
16:22:55 Blobは正しく変換されているみたいだけど……
16:35:10 upload方法を調べ直す
コードは https://github.com/discordeno/discordeno/blob/73ec09023e241b26df64ff8770d54f4126211eb0/packages/rest/src/manager.ts#L185
fileを消す必要あり
16:50:00 なにがいけないんだ?
https://discord.com/developers/docs/reference#editing-message-attachments-example-request-bodies-multipartformdata
Content-Dispositionは入ってる
multipart/form-dataで送ってる
nameとfilenameもある
なのになぜか{"message": "Cannot send an empty message", "code": 50006}になる
payload_jsonにcontent-typeがないせいか
17:02:33 入れたけど改善しない
2024-06-27 12:11:02 https://stackoverflow.com/questions/52509999 を参考にできないか?
断片的なメモになってしまい、Google Apps ScriptでDenoにfileをuploadするのに使えなかった方法が結局なんだったのかよくわからない
整理したい
15:23:04 修正
URLを使わない
全てのタスクが終了してから時刻更新する
(projectの設定)エラーをすぐ通知する
defaultFormatterをdefault argumentにする
すっかり忘れてたtakker.icon
15:11:05 全然メールが送られていなかった
GASではnew URL()できないのに、URLを使ってしまっていたことが原因っぽい
https://zenn.dev/woo_noo/articles/4381f027e31f24b699cf#url-クラスや-urlsearchparams-がない
2024-04-03
07:52:51 昨日cheerioの型定義がGASと相性悪くて型エラーが出てしまった
解決策として、https://cdn.jsdelivr.net/npm/@types/cheerio@0.22.35/index.d.ts を改造して使ってみることにする
cheerioの本体はGoogle Apps Scriptから使えるので、型定義のみ取り込めればいい
08:17:16 だめだこれ。@types/cheerioは古いversionしかない
最新versionのcheerioの型定義は、複数ファイルに分割されている
08:34:39 https://cdn.jsdelivr.net/npm/@types/cheerio@0.22.35/index.d.ts にunwrap()の定義を追加すればなんとかなるかな
08:43:47 cacheが型チェックの悪さをしていそうなので、再起動している
08:45:15 takker.iconのrepoのdeno-gas-typesに変えたら直った
ほかの<reference lib=>と衝突したのだろうか
08:57:17 まとめて型チェック(deno check --remote **/*.ts)すると型定義の衝突が発生するが、main.tsとbuild.tsを別々にチェックすれば発生しない
$ deno check --remote main.ts && deno check --remote build.ts deps/*.ts
09:07:35 エラー修正完了
あとは転送内容をカスタムできるようにすれば完成かな
Discordのwebhook
10:49:53 カスタムしたら、URLとBlobで型エラーがでてしまった
また調整しなきゃ……
10:54:00 修正完了
produstの型定義にしたら直った
11:12:16 released
2024-04-02
09:21:28 repo作成
version管理したくなったので、takker99名義でrepoを掘った
まだコードは移していない
当初deno-gas-starterで作ろうとしたが、repoにscript IDを入れる、つまりproject依存になってしまうので、一から作ることにした
各自でscriptをbuildし、各自のgoogle apps scriptのprojectにコードをコピペする仕様にする
#2024-06-27 12:11:17
#2024-05-24 10:15:51
#2024-05-24 10:12:20
#2024-04-03 11:12:22
#2024-04-02 09:20:23