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

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

新規登録して質問してみよう
ただいま回答率
85.50%
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回答

387閲覧

GAS でスプレッドシートの複数列から検索する定義をしたい

BBA

総合スコア60

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クリップ

投稿2023/02/07 15:28

実現したいこと

LINE Bot でスプレットシートの語句を検索して応答するBotを作成しています。
検索する列を複数定義したいのですが、うまくいかず困ってます。

入力したテキストがA列とB列の中のテキストに含まれていた時、C列D列のテキストを応答するようにしたいです。

該当のソースコード

var ACCESS_TOKEN = "***"; var ss = SpreadsheetApp.openById("***"); var wordListSheets = [ss.getSheetByName('*'),ss.getSheetByName('*')]; function doPost(e){ if (typeof e === "undefined"){ return; } else { var json = JSON.parse(e.postData.contents); replyFromSheet(json) } } function getWordListFrom(sheets) { var wordList = []; sheets.forEach(sh => { var lastRow = sh.getLastRow(); if (lastRow > 0) { wordList = [...wordList, ...sh.getRange(1,1,lastRow,4).getValues()]; } }) return wordList; } function replyFromSheet(data) { var replyUrl = "https://api.line.me/v2/bot/message/reply"; var wordList = getWordListFrom(wordListSheets); var reply_token = data.events[0].replyToken; //reply token var text = data.events[0].message.text; var replyTextList = []; for(var i = 1; i < wordList.length; i++) { ***↓wordList[i][0]とwordList[i][1]の中のテキストを含むときにしたい**** if(wordList[i][0].includes(text) && text.length > 1) { let wordtext = [wordList[i][2],wordList[i][3]] replyTextList.push(wordtext.join(' ')); } } }

質問に不必要なコードは削除してます

試したこと

wordListsでA列とB列を定義してみましたが、
デプロイしても応答がなかったです。

for(var i = 1; i < wordList.length; i++) { let wordLists = [wordList[i][0],wordList[i][1]] ←試した追加コード if(wordLists.includes(text) && text.length > 1) { let wordtext = [wordList[i][2],wordList[i][3]] replyTextList.push(wordtext.join(' ')); } }

できそうな気がしますが、なかなか出来なくてヤキモキしてます。
すみませんがご教授していただけないでしょうか。

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

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

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

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

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

YAmaGNZ

2023/02/07 22:18

小細工せずに「wordList[i][0]の中のテキストを含むとき」かつ「wordList[i][1]の中のテキストを含むとき」とすればいいのでは?
BBA

2023/02/08 06:52

なんで気づかなかったんだろ。出来ました!ありがとうございます!
guest

回答1

0

自己解決

条件式に、||で追加しました。

投稿2023/02/08 06:53

BBA

総合スコア60

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

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

YAmaGNZ

2023/02/08 07:49

提示コードのコメントを見て「and」かと思っていたのですが「or」だったんですか?
BBA

2023/02/08 09:01

どっちかの列に入っていたらっていう条件式にしたかったんです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問