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

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

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

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

Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google Apps Script

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

Q&A

1回答

792閲覧

スプレッドシートで更新された1行目を無視して最終行のみをLINEトークンへと送信したい

dshiraiwa

総合スコア9

LINE Messaging API

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

Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google Apps Script

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

0グッド

0クリップ

投稿2021/09/17 11:06

編集2021/09/17 14:10

いつもお世話になっております。
LINEの回答フォームによるアンケート結果がスプレッドシートに反映されるため
その新着情報をLINEグループに転送しようと以下のスクリプトを作成しました。
※参考:リンク内容

しかし、本来は新たに加わったアンケート内容(最終行のみ)を転送したいのですが、
1行目の質問項目も新たに更新されるからなのか、こちらの内容も2通目としてグループへ
転送されてしまう現象に悩んでおります。

 function checkUpdate(){ var mySheet = SpreadsheetApp.getActiveSheet(); //シートを取得 var myCell = mySheet.getActiveCell(); //アクティブセルを取得 var row = myCell.getRow(); var q1 = mySheet.getRange(row, 1).getDisplayValue(); var q2 = mySheet.getRange(row, 2).getValue(); var q3 = mySheet.getRange(row, 3).getValue(); var q4 = mySheet.getRange(row, 4).getValue(); var message = "アンケート結果 \n"+ "お名前:" + q1 + "\n" + "フリガナ:" + q2 + "\n" + "郵便番号:" + q3 + "\n" + "ご住所:" + q4 + "\n" ; sendLine(message); } function sendLine(msg){ var token = "LINEトークン"; var options = { "method": "post", "Content-Type" : "application/x-www-form-urlencoded", "payload": "message=" + msg, "headers":{"Authorization" : "Bearer " + token} }; UrlFetchApp.fetch("https://notify-api.line.me/api/notify",options); } ``` この対策としまして、 (1) 1行目の更新を無視する (2) 最終行のみの内容を転送する (3) 2通目が届かなくなるようにする ↑ といった、対処で回避できると考えているのですが、スクリプトのどの部分を変更すればよいか? が分からず、いつもお世話になっているこちらにて質問をさせていただきました。 お忙しいことと存じますが… もしよろしければ、ご助言を賜りたく、何とぞ、宜しくお願い致します。 ※追記、LINEの回答フォームがスプレッドシートに反映される画面のスクショ画像を添付しました。 ![イメージ説明](001eb8eb8dba5ace1cdcbf59ebc49b28.png)

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2021/09/17 12:38

・LINEの回答フォームによるアンケート結果 →正しくは「Googleフォームによるアンケート結果」という理解でよろしいでしょうか? ・質問文記載のコードは一部しか記載されていないようですが、可能な限り全部記載していただけないでしょうか?(もちろんIDやlineトークン等はダミーの文字列に直していただいて構いません)
dshiraiwa

2021/09/17 12:56

コメントありがとうございます。 > ・LINEの回答フォームによるアンケート結果 > →正しくは「Googleフォームによるアンケート結果」という理解でよろしいでしょうか? いえ、参考リンクはGoogleフォームによるアンケート結果なのですが、今回のご相談はLINE公式の「回答フォーム」の入力結果を反映させたスプレッドシートでのご相談となります。 > ・質問文記載のコードは一部しか記載されていないようですが、可能な限り全部記載していただけないでしょうか?(もちろんIDやlineトークン等はダミーの文字列に直していただいて構いません) こちらは、すべて反映させました。 ご指導、お願いいたします。
退会済みユーザー

退会済みユーザー

2021/09/17 13:42

LINE公式の「回答フォーム」の入力結果は、どのようにして、回答がある都度リアルタイムにGoogleスプレッドシートに反映されているのでしょうか? (手動で適当なタイミングで、Googleドライブにcsvエクスポートしているのでしょうか?)
dshiraiwa

2021/09/17 14:11

ご返信、ありがとうございます。 > 回答がある都度リアルタイムにGoogleスプレッドシートに反映されているのでしょうか? 画像を追加させていただきました。 こちらの緑のアイコンをクリックすると、スプレッドシートに自動反映されたアンケート結果が確認することができる仕様となっています。
guest

回答1

0

(2)の最終行だけ内容を転送すればよいのであるならば、下記のようにしてみてはいかがでしょうか。

diff

1function checkUpdate(){ 2 var mySheet = SpreadsheetApp.getActiveSheet(); //シートを取得 3- var myCell = mySheet.getActiveCell(); //アクティブセルを取得  //削除 4- var row = myCell.getRow(); // 削除 5+ var row = mySheet.getLastRow(); // 追加 最終行を取得 6 var q1 = mySheet.getRange(row, 1).getDisplayValue(); 7 var q2 = mySheet.getRange(row, 2).getValue(); 8 var q3 = mySheet.getRange(row, 3).getValue(); 9 var q4 = mySheet.getRange(row, 4).getValue(); 10 var message = "アンケート結果 \n"+ 11"お名前:" + q1 + "\n" + 12"フリガナ:" + q2 + "\n" + 13"郵便番号:" + q3 + "\n" + 14"ご住所:" + q4 + "\n" ; 15 sendLine(message); 16}

投稿2021/09/17 14:33

編集2021/09/18 00:21
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

dshiraiwa

2021/09/17 23:25

おはようございます! 回答、ありがとうございます! > if (row == 1) return; //追加 こちらを加えたのですが… 今度は通知自体が届かなくなってしまいました…。 ただ… > その元々のサービス元のヘルプデスクとかに問い合わせた方が諸々解決はしやすいかと思います) 仰る通りだと思いました。 解決方法について、システム側に問い合わせたほうが早いなと思いましたので、問い合わせてみようと思います! お忙しい中、ご指導いただきましてありがとうございました!
退会済みユーザー

退会済みユーザー

2021/09/18 00:21

回答を修正しました
dshiraiwa

2021/09/18 02:31

ありがとうございます! スイマセン!本当にお付き合いいただきまして…(お忙しいことと思いますのに…) > - var myCell = mySheet.getActiveCell(); //アクティブセルを取得  //削除 > - var row = myCell.getRow(); // 削除 > + var row = mySheet.getLastRow(); // 追加 最終行を取得 こちらをさっそくやってみたのですが… 今度は、最終行の更新内容(同じもの)が2通、LINEグループに自動転送されるようになってしまいました。 ・これまで 1行目 + 最終(更新)行 ・今回 最終(更新)行 + 最終(更新)行 と、もはや〇ステップの仕様に少々、イラっとしてしまいました。 お手を煩わせてしまったにもかからず、解決に至らず本当に心苦しく… 〇ステップの有人チャット対応は平日とのことですので、 平日に問い合わせてみようかと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問