質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

2回答

838閲覧

GmailからChatworkへの連携

yana-gi

総合スコア17

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2019/02/08 04:40

前提・実現したいこと

初めて質問させていただきます。

Google Apps Script を利用して、Gmailで受信したメールに添付されているファイルを
Chatworkの指定グループへ、アップロードを行いたいと思っております。

メール本文をメッセージとしてChatworkへ送信することは出来ました。
また、Googleドライブへ添付ファイルを移動することもできました。

添付ファイル自体を操作することが不可能であれば、GamileやGoogleドライブへの
URLをリンクとして貼り付けられればと思います。
ただし、Chatworkの各メンバーはGoogleへのID/PWの入力を行わずリンクをクリックするだけで
GamileやGoogleドライブの画面を開くようにしたいです。

このどちらかの方法はScriptからの操作では、実現不可能でしょうか?

よろしくお願いいたします。

発生している問題・エラーメッセージ

なし

試したこと

var objfile = myFolder.createFile(attachments[k]);

objfileを何かしらすれば良いのかと思ったのですが、
何もできませんでした。

補足情報(FW/ツールのバージョンなど)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ChatWork APIにファイルアップロード機能もありますので、/rooms/{room_id}/filesPOSTすることで、ファイル送信が可能です。

投稿2019/02/08 04:47

maisumakun

総合スコア145184

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

papinianus

2019/02/08 05:11

>メール本文をメッセージとしてChatworkへ送信することは出来ました。 また、Googleドライブへ添付ファイルを移動することもできました。 このレベルなら https://qiita.com/s-shinnosuke/items/f9968404f469c0fb45ca このリンクみつつできるんじゃないかな
yana-gi

2019/02/08 09:00

ご回答ありがとうございます。 こんなにも早く回答が頂けると思っておりませんでした。 教えていただきましたリンクを参考に試してみます。
yana-gi

2019/02/13 06:28

お世話になっております。 教えていただきましたリンク先をもとに色々と試してみたのですが 私のレベルでは、Googleドライブへのリンク先を貼り付けるのが限界でした。 下記のようなコードを書いてみたのですが、「getBlob().getDataAsString()」の使い方がわかっていません。 (そもそも、こんなコードで良いのか悩んでもいます。) var obj = DriveApp.getFilesByName(file.getName()).next(); var GL_DATA = obj.getBlob().getDataAsString(); var msgBody = "--" + BOUNDARY + "\n" + "Content-Disposition: form-data; name=\"file\"; filename=" + GL_FILENM + "\n" + "Content-Type: multipart/form-data "+ "\n" + "--" + BOUNDARY + "\n" + GL_DATA + "\n" + "--" + BOUNDARY + "--"; //------------------------------ //Chatworkへ添付ファイルを送る //------------------------------ UrlFetchApp.fetch(CW_URL + CW_ROOM + '/files', { headers: {'X-ChatWorkToken': CW_TOKEN}, method: 'post', payload: 'body=' + encodeURIComponent(msgBody) }); お忙しいところ申し訳ありませんが、ご教示いただければ幸いです。
guest

0

ベストアンサー

maisumakun様に申し訳ない展開になってしまった。

chatworkのアカウントとって、やってみたけどこんな感じでできました。

フォーマットがおかしくてファイルが登録されなくてもfileidが返されるっていうのが困りものですね、このAPI

javascript

1function q173337_file() { 2 const token = "あなたのapi token"; 3 const filename = "ふぁいるのなまえ"; 4 const filenameOnChatwork = filename; //送信後の名前。同じにしてる 5 const rid = "るーむid"; 6 const contenttype = 'application/pdf'; //イメージなのか何のなのか。これが無くて動くかは検証してないっす 7 const apiUrlRoom = "https://api.chatwork.com/v2/rooms/" + rid + "/files"; 8 const file = DriveApp.getFilesByName(filename).next(); 9 const bytesArray = file.getBlob().getBytes(); 10 11 const res = UrlFetchApp.fetch(apiUrlRoom, 12 { 13 headers: {'X-ChatWorkToken': token}, 14 method: 'post', 15 payload: {'file':Utilities.newBlob(bytesArray, 'application/pdf', filenameOnChatwork) }, 16 muteHttpExceptions : true, 17 }); 18 19 Logger.log(res); //resにfile idが返されます。 20}

投稿2019/02/13 08:49

papinianus

総合スコア12705

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yana-gi

2019/02/13 09:25

papinianus 様 ご丁寧な回答本当にありがとうございます。 無事にChatworkへのファイルのアップロードに成功しました。 後は無事送信が完了した後に、Googleドライブからファイルを削除する処理まで書いて スッキリとしたいと思います。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問