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

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

新規登録して質問してみよう
ただいま回答率
85.48%
LINE Messaging API

LINE Messaging APIは、メッセージの送信・返信ができるAPIです。Web APIを経由しアプリケーションサーバとLINEのAPIでやり取りが可能。複数のメッセージタイプや分かりやすいAPIリファレンスを持ち、グループチャットにも対応しています。

Google フォーム

Google フォームは、 Google社が提供しているアンケートフォーム作成および集計ができる無料のツール。Googleアカウントがあれば利用が可能です。集計データは、スプレッドシートに収集され、データ分析もできます。

Google Apps Script

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

Q&A

解決済

3回答

2207閲覧

Googleフォームでアップした画像をLINEグループにも表示させたい(画像IDまでは表示される)

dshiraiwa

総合スコア9

LINE Messaging API

LINE Messaging APIは、メッセージの送信・返信ができるAPIです。Web APIを経由しアプリケーションサーバとLINEのAPIでやり取りが可能。複数のメッセージタイプや分かりやすいAPIリファレンスを持ち、グループチャットにも対応しています。

Google フォーム

Google フォームは、 Google社が提供しているアンケートフォーム作成および集計ができる無料のツール。Googleアカウントがあれば利用が可能です。集計データは、スプレッドシートに収集され、データ分析もできます。

Google Apps Script

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

0グッド

0クリップ

投稿2022/04/01 12:49

Googleフォームの情報をLINE Notifyを使用して、内容を転送するところまではできたのですが、Googleフォームの「アップロード画像」については、画像のIDのみが表示されるようになってしまいます。(画像)
イメージ説明
スクリプトについては、以下のサイトを参考に(ほぼそのままですが…)作成しました。

【コピペでOK!】GASでGoogleフォームの回答を管理者に自動LINE通知する方法

アップした画像のIDまでは表示されるので、あと一歩だと思うのですが、具体的な文言が思い浮かばず、苦心しております。

LINEに画像を表示するイメージはこちらのサイトのような形です(※以下サイトより)
【コピペでOK!GAS】LINE Notifyで画像を送信する方法

※この表に表示したい(画像)
イメージ説明
つきましては、ご指導いただいているばかりで恐縮なのですが…
現状作成しているスクリプトを記載いたしますので、何とぞ、ご指導のほどお願いいたします。

function autoLine(e) { /* ステップ1: フォームのデータを取得する */ //すべての質問と回答を取得する let itemResponses = e.response.getItemResponses(); /* ステップ2: 必要なデータを抽出する */ //個々の質問と回答を格納するための空配列を宣言する let questionAndAnswers = []; //for文(ループ)で変数itemResponsesから個々の質問と回答を取得する for(let i = 0; i < itemResponses.length; i++) { //質問のタイトルを取得する let questionTitle = itemResponses[i].getItem().getTitle(); //回答を取得する let answer = itemResponses[i].getResponse(); //未回答の質問かどうかで送信文章を調整する if(!answer) { questionAndAnswers.push(questionTitle + ": 未回答"); } else { questionAndAnswers.push("≪" + questionTitle + "≫\n" + answer + "\n"); } } /* ステップ3: 宛先、本文を決める */ //LINEの宛先 //★★★LINE Notifyのトークンを入力してください★★★ let token = "LINEトークンを入れています"; //LINEの本文 //★★★お好きな本文に変更ください★★★ let body = "\n状況報告書フォームの回答を受信しました。\n" + "\n" //一次元配列questionAndAnswersに対してjoinメソッドを使って文字列を作成する //区切り文字は改行"\n" + questionAndAnswers.join("\n"); /* ステップ4: 管理者にLINEを送信する */ //管理者にLINEを送信する sendLine(token, body); } function sendLine(token, body) { let options = { "method" : "post", "payload" : {"message": body, }, "headers" : {"Authorization" : "Bearer "+ token} }; UrlFetchApp.fetch("https://notify-api.line.me/api/notify", options); }

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

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

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

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

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

guest

回答3

0

ベストアンサー

LINE Notify APIのドキュメント(Messaging APIではありません)によると、 imageFile プロパティにファイルを指定することでアップロードできます。
https://notify-bot.line.me/doc/ja/

ただし、ファイルのパーミッションを公開設定にする必要があるようです。
下記の

// パーミッション設定と画像取得 fileImage.setSharing(DriveApp.Access.ANYONE, DriveApp.Permission.VIEW);

の部分です。

詳細は下記を参照:
https://qiita.com/Qnoir/items/9048cbb08e0ca3297306


コードを直すとすれば下記のようになるでしょうか。
(元の質問のコメントその他のコードはほぼ残してあります)

js

1function autoLine(e) { 2 /* ステップ1: フォームのデータを取得する */ 3 //すべての質問と回答を取得する 4 let itemResponses = e.response.getItemResponses(); 5 6 /* ステップ2: 必要なデータを抽出する */ 7 //個々の質問と回答を格納するための空配列を宣言する 8 let questionAndAnswers = []; 9 let blob = null; 10 //for文(ループ)で変数itemResponsesから個々の質問と回答を取得する 11 for(let i = 0; i < itemResponses.length; i++) { 12 //質問のタイトルを取得する 13 let questionTitle = itemResponses[i].getItem().getTitle(); 14 15 //回答を取得する 16 let answer = itemResponses[i].getResponse(); 17 18 //未回答の質問かどうかで送信文章を調整する 19 if(!answer) { 20 questionAndAnswers.push(questionTitle + ": 未回答"); 21 } else { 22 if (questionTitle == "添付画像") { 23 const fileImage = DriveApp.getFileById(answer); 24 // パーミッション設定と画像取得 25 fileImage.setSharing(DriveApp.Access.ANYONE, DriveApp.Permission.VIEW); 26 blob = fileImage.getBlob(); 27 continue; 28 } 29 questionAndAnswers.push("≪" + questionTitle + "≫\n" + answer + "\n"); 30 } 31 } 32 33 /* ステップ3: 宛先、本文を決める */ 34 //LINEの宛先 35 //★★★LINE Notifyのトークンを入力してください★★★ 36 let token = "LINEトークンを入れています"; 37 38 //LINEの本文 39 //★★★お好きな本文に変更ください★★★ 40 let body = "\n状況報告書フォームの回答を受信しました。\n" 41 + "\n" 42 //一次元配列questionAndAnswersに対してjoinメソッドを使って文字列を作成する 43 //区切り文字は改行"\n" 44 + questionAndAnswers.join("\n"); 45 46 /* ステップ4: 管理者にLINEを送信する */ 47 //管理者にLINEを送信する 48 sendLine(token, body, blob); 49 } 50 51 function sendLine(token, body, blob) { 52 let options = 53 { 54 "method" : "post", 55 "payload" : {"message": body, 56 "imageFile" : blob, 57 }, 58 "headers" : {"Authorization" : "Bearer "+ token} 59 }; 60 61 UrlFetchApp.fetch("https://notify-api.line.me/api/notify", options); 62 }

投稿2022/04/01 16:53

編集2022/04/01 23:19
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

penguin520

2022/04/01 23:11

参考になりました。ありがとうございます。
dshiraiwa

2022/04/02 01:23

おはようございます! 連続でのご回答(他のご相談でもご指導いただきまして)本当にありがとうございます! 朝、修正前のスクリプトを活かして、また ------------------------- 詳細は下記を参照: https://qiita.com/Qnoir/items/9048cbb08e0ca3297306 ------------------------- のサイトも拝見しまして、試行錯誤しておりましたが…無事に実装できました! そのお礼を…と思ったのですが、なんと! 私の書いたものに合わせて修正いただいておりましたことにビックリしました!! お気遣い、本当にありがというございます! 先に書いていただいたものにも感じたのですが…なんと綺麗なコードなんだと。 私はまだまだ不勉強なのですが、そのような綺麗でスマートなコードが書けるようになりたいなと思いました。 連日、お付き合いいただきまして本当にありがとうございました!! 2日間、奮闘した末に大きな達成感が得られましたこと、心から感謝いたします!!m(_ _)m
退会済みユーザー

退会済みユーザー

2022/04/02 04:44

> penguin520様 恐縮です。御回答に後から重ねた形になってすみません。 > dshiraiwa様 コメントありがとうございます。 記事を見て実装なされたとのことで、流石です。 最初から追記分を書いていればお手間をおかけしなかったかもしれずすみません。 コードも、いろいろ書き方がありますので(私のがベストというわけでもなく)、色々なコードを見ることだと思います。御興味があればリーダブル・コードという本をお読みになってもよいかもしれません。
guest

0

https://developers.line.biz/ja/reference/messaging-api/#image-message
ドキュメントを読む限りでは、画像のURLを入力する必要があるので、そのIDの画像にリンクが貼れるのであれば、そのように。それができないのであれば、フォームの画像をどこかにアップロードする処理が別途必要になるようです。

投稿2022/04/01 13:19

penguin520

総合スコア345

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

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

dshiraiwa

2022/04/02 01:16

回答ありがとうございます! qnoirさんの回答で、解決したわけですが…なにより一番の回答いただいたそのお気持ちが嬉しかったです! 今度は私が解決の手を差し伸べられるようにならなければと思いましたm(_ _)m
guest

0

大変失礼します。
私もLINEへ回答と画像を転送したく、コードを探しております。
解決したコードをシェアいただけませんでしょうか?

投稿2022/10/25 03:35

endo___

総合スコア2

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

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

dshiraiwa

2022/10/27 04:45

コメント、確認いたしました。 > 解決したコードをシェアいただけませんでしょうか? 解決したコードは、上記の回答者さま(qnoir氏)のコードとなりますので、こちらをご参考いただけば解決できますので実践されてみてください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問