有關google表單內容轉成linebot問卷形式的問題,我想在第一段程式內來啟動google表單執行問卷內容,但是經過判斷式後,問卷只會執行1次,也就是表單內容都只會出現1題,要執行下一題又得輸入一次關鍵字,想問看有沒有什麼方法,可以在第一段程式驅動後,問卷全部填完,才跳出第二段程式呢?
或者是要怎麼辦才能重複呼叫同一支function,直到達成目的呢?
//---------**第一段程式碼**-------------
function doPost(e) {
var userData = JSON.parse(e.postData.contents);
console.log(userData);
// 取出 replayToken 和發送的訊息文字
var replyToken = userData.events[0].replyToken;
var clientID = userData.events[0].source.userId;
//*判斷使用者是否想填問卷*
if((userData.events[0].message.text) == "問卷")//*如果關鍵字是問卷,開始填寫問卷*
//--不知道if裡面能+for迴圈嗎?--
{
questionform(e); //*呼叫第二段問卷程式*
}
}
//-----------**第二段程式碼-**----------
///*questionform start*
function questionform(e){
var userData = JSON.parse(e.postData.contents);
console.log(userData);
// *取出 replayToken 和發送的訊息文字*
var replyMessage = [];
var replyToken = userData.events[0].replyToken;
var clientID = userData.events[0].source.userId;
var clientMessage;
var nowTime = new Date();
//判斷使用者回復格式
switch(userData.events[0].type) {
case "message":
switch(userData.events[0].message.type) {
case "text":
clientMessage = userData.events[0].message.text;
break;
case "sticker":
case "location":
return;
break;
case "postback":
switch(userData.events[0].postback.data){
case "DateMessage":
clientMessage = userData.events[0].postback.params.date;
replyMessage.push({type:"text", text:clientMessage});
break;
case "TimeMessage":
clientMessage = userData.events[0].postback.params.time;
replyMessage.push({type:"text", text:clientMessage});
break;
case "ignoreQuestion":
clientMessage = "NULL";
replyMessage.push({type:"text", text:"此題已略過"});
break;
case "otherOption":
replyMessage = replyMessage.concat(otherOptionMessage());//呼叫//其他選項
sendReplyMessage(CHANNEL_ACCESS_TOKEN, replyToken, replyMessage);
return;
break;
}
case "follow":
clientMessage = "follow";
break;
default:
return;
}
//紀錄使用者回復資料+時間
var replyData = getUserAnswer(clientID, clientMessage);//呼叫//判斷使用者回答到第幾題
switch (replyData[1]) {
case -1:
sheet.getRange(replyData[0], 1).setValue(Date());//第'陣列replyData[0]'列,第1行,設定日期
replyMessage = replyMessage.concat(finishTheQuestionnare(replyData[2]));//呼叫//取得最後一個問題之後的東西
sendReplyMessage(CHANNEL_ACCESS_TOKEN, replyToken, replyMessage);//呼叫//確認回復訊息
return;
break;
case 1:
replyMessage = replyMessage.concat(getFormTitle());//呼叫//取得表單名稱及說明
break;
}
replyMessage = replyMessage.concat(getQuestion(replyData[1]));//呼叫//取得要送出的題目
sendReplyMessage(CHANNEL_ACCESS_TOKEN, replyToken, replyMessage);//呼叫//確認回復訊息
}
///questionform end
給你一個大概的流程
把所有對話儲存起來,最後再對應問題把格式正確的答案一項一項填到表單
Linebot想要填問卷這種一步一步引導式操作的需要設計一個流程
例如:問卷
觸發這個指令就進行問卷填寫
那如何讓使用者觸發下一個指令呢?
這邊比較推1.或3.