前提・実現したいこと
全くの初心者で、最近プログラミングの学習をしております。
いま練習用に、GASにてあ行をか行、さ行へ変換するLine Botを作っています。
いろんなサイトを調べ、ここまでは作ることができたのですが、
IF文の繰り返しをあ、い、う、え、おと分けずに、IF文以外の方法で簡潔に処理する方法を知りたい。
Lineにて
あ、と送れば
か、さ
と返信されます。
あ、から、お、まで少ないので手間ではないですが、
今後何個もあるデータの中から値を取り出したいときに
IF文を何行も書いていては成長しないと思い質問させていただきました。
発生している問題・エラーメッセージ
if ('こんにちは' == user_message) {
reply_messages = ['こんにちは!か行,さ行に変換できます'];
} else if ("あ" == user_message) {
reply_messages = [reply + "\n" + reply2];
} else if ("い" == user_message) {
reply_messages = [reply + "\n" + reply2];
} else if ("う" == user_message) {
reply_messages = [reply + "\n" + reply2];
} else if ("え" == user_message) {
reply_messages = [reply + "\n" + reply2];
} else if ("お" == user_message) {
reply_messages = [reply + "\n" + reply2];
} else {
//母音が入力されたときの処理
reply_messages = ['母音以外は変換できません!'];
こちらのIF分を、同じ処理ができ、あ、い、う、え、お
と分けずに書く方法がいろいろ調べましたが解りませんでした。
該当のソースコード
function doPost(e) { var json = JSON.parse(e.postData.contents); var reply_token= json.events[0].replyToken; if (typeof reply_token === 'undefined') { return; } var user_message = json.events[0].message.text; var spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); var sheet = spreadsheet.getActiveSheet(); var range = sheet.getRange("A1:C7"); var value = range.getValues(); var i = value.length; var s = 0 ; for (s==0;s<i;s++){ if(value[s][0] == user_message){ var reply = value[s][1]; var reply2 = value[s][2]; } } var reply_messages; if ('こんにちは' == user_message) { //こんにちはと入力された際 reply_messages = ['こんにちは!か行,さ行に変換できます']; } else if ("あ" == user_message) { reply_messages = [reply + "\n" + reply2]; } else if ("い" == user_message) { reply_messages = [reply + "\n" + reply2]; } else if ("う" == user_message) { reply_messages = [reply + "\n" + reply2]; } else if ("え" == user_message) { reply_messages = [reply + "\n" + reply2]; } else if ("お" == user_message) { reply_messages = [reply + "\n" + reply2]; } else { reply_messages = ['か行、さ行以外には変換できません!']; } var messages = reply_messages.map(function (v) { return {'type': 'text', 'text': v}; }); UrlFetchApp.fetch(line_endpoint, { 'headers': { 'Content-Type': 'application/json; charset=UTF-8', 'Authorization': 'Bearer ' + CHANNEL_ACCESS_TOKEN, }, 'method': 'post', 'payload': JSON.stringify({ 'replyToken': reply_token, 'messages': messages, }), }); return ContentService.createTextOutput(JSON.stringify({'content': 'post ok'})).setMimeType(ContentService.MimeType.JSON); }
試したこと
for文を使えばできそうなのですが、2日ほど調べ色々と試しましたが、うまく動作しませんでした。
補足情報(FW/ツールのバージョンなど)
スプレッドシートに
l A l B l C l D l
1 母音 A K S
2 a あ か さ
3 i い き し
4 u う く す
5 e え け せ
6 o お こ そ
このデータがあります。
回答3件
あなたの回答
tips
プレビュー