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

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

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

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

Google Apps Script

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

Q&A

解決済

1回答

732閲覧

GAS でスプレッドシートを指定するとき複数まとめて指定したい

BBA

総合スコア60

LINE Messaging API

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

Google Apps Script

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

0グッド

0クリップ

投稿2023/01/19 15:23

編集2023/01/19 15:24

スプレッドシートの語句を返答するLINE botを作成しています

LINE BOTでスプレッドシート内の語句がある時、返答語句を返す機能を作りました。
機能を追加しており、読込たいスプレッドシートが複数ある時
どうコードを書けばいいかわかりません。

実現したいこと

var ss = SpreadsheetApp.openById("******"); var sh = ss.getSheetByName('a'); ←aシートとcシートを設定したいです

該当のソースコード

var ACCESS_TOKEN = ”****"; var ss = SpreadsheetApp.openById("***"); var sh = ss.getSheetByName('a'); ←aシートとcシートを設定したいです function doPost(e){ if (typeof e === "undefined"){ return; } else { var json = JSON.parse(e.postData.contents); replyFromSheet(json) } function replyFromSheet(data) { var replyUrl = "https://api.line.me/v2/bot/message/reply"; var lastRow = sh.getLastRow(); var wordList = sh.getRange(1,1,lastRow,3).getValues(); 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++) { if(wordList[i][0].includes(text) && text.length > 1) { let wordtext = [wordList[i][1]] replyTextList.push(wordtext.join(' ')); } } if(replyTextList.length < 1) { return; } else if(replyTextList.length > 5) { var messageLength = 5; } else { var messageLength = replyTextList.length; } var messageArray = []; for(var j = 0; j < messageLength; j++) { messageArray.push({"type": "text", "text": replyTextList[j]}); } var headers = { "Content-Type": "application/json; charset=UTF-8", "Authorization": "Bearer " + ACCESS_TOKEN, }; var postData = { "replyToken": reply_token, "messages": messageArray }; var options = { "method" : "post", "headers" : headers, "payload" : JSON.stringify(postData) }; UrlFetchApp.fetch(replyUrl, options); } 質問にいらないところ一部分割愛してます

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

どなたかお教えいただけないでしょうか。よろしくお願いします。

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2023/01/19 15:38

「機能を追加した」とは具体的にどういう意味でしょうか 複数のシートからwordListを読み込むようにしたい、という理解でいいですか?
BBA

2023/01/19 15:43

すみません。複数のシートからwordListを読み込むようにしたい、です。
guest

回答1

0

ベストアンサー

「wordlist のデータを、複数のシートから読み込みたい」ということであれば、
wordlist のデータを複数のシートから読み込む関数を作ればよいのではないでしょうか。

注意:各wordlistの元シートの読み込み開始位置はすべて同じであるという前提です(A列~C列の3列、1行目以降)。
aシートはA1セルを左上とする3列の範囲を読み込むが、bシートはB3セルを左上とする4列の範囲を読み込む、というような場合下記はうまく動きません(別のアプローチが必要)

js

1var ACCESS_TOKEN = ”****"; 2var ss = SpreadsheetApp.openById("***"); 3 4// sh = ss.getSheetByName('a') // 削除 5// シートの配列 6var wordListSheets = [ss.getSheetByName('a'), ss.getSheetByName('b')]; 7 8// wordlist のデータを複数のシートから読み込む関数 9function getWordListFrom(sheets) { 10 var wordList = []; 11 sheets.forEach(sh => { 12 var lastRow = sh.getLastRow(); 13 14 // データがないシートはスキップ 15 if (lastRow > 0) { 16 wordList = [...wordList, ...sh.getRange(1,1,lastRow,3).getValues()]; 17 } 18 }) 19 return wordList; 20} 21 22function replyFromSheet(data) { 23 var replyUrl = "https://api.line.me/v2/bot/message/reply"; 24 // var lastRow = sh.getLastRow(); 削除 25 26 // var wordList = sh.getRange(1,1,lastRow,3).getValues(); // ここを下のように修正 27 var wordList = getWordListFrom(wordListSheets)); 28 29... 30以下略 31... 32} 33以下略

投稿2023/01/19 15:48

編集2023/01/19 16:00
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

BBA

2023/01/23 06:50

できましたー!!!!!!!! ありがとうございました!!!!!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問