นอกจาก การ ดึง ข้อมูล จาก Google Sheet ด้วย บอ ท ได้ แล้ว ยัง สามารถ เพิ่ม ลบ ข้อมูล ได้ และ เลือก ว่า ลง ข้อมูล แผ่น งาน ก็ได้ ด้วย นะ

หลาย คน คง เคย ทำการ ดึง ข้อมูล Google Sheet ด้วย บอ ท มา แล้ว ฉะนั้น วัน นี้ เรา จะ เพิ่ม ลบ และ การ ลง ข้อมูล ใน แต่ละ เพิ่ม เข้าไป หน่อย แล้วกัน นะ มา ที่ เข้าไป ศึกษา กลิ้ง ที่ ล่าง นี้ ที่ เรา อ้างอิง มา ได้ เลย นะ คะ



เมื่อเราทำตามและสามารถใช้งานได้แล้วมาต่อกันเลยจากตัวอย่างโค้ดนี้กัน โค้ดนี้คือโค้ดทั้งหมดในการทำการจัดการข้อมูลนะคะ

var ss = SpreadsheetApp.openByUrl("ชื่อ URL แผผ่นงานของเรา");
var sheet = ss.getSheetByName("ชื่อแผ่นงานของเรา");
function doPost(e) {
var data = JSON.parse(e.postData.contents)
var userMsg = data.originalDetectIntentRequest.payload.data.message.text;
var values = sheet.getRange(2, 1, sheet.getLastRow(),sheet.getLastColumn()).getValues();
var userCommand = userMsg.split(",");
if(userCommand[0] == "เพิ่ม"){
sheet.getRange(values.length+1,1).setValue(userCommand[1]);
sheet.getRange(values.length+1,2).setValue(userCommand[2]);
sheet.getRange(values.length+1,3).setValue(userCommand[3]);
var result = {
        "fulfillmentMessages": [
          {
            "platform": "line",
            "type": 4,
            "payload" : {
              "line":  {
                "type": "text",
                "text": "added"
              }}
          }
        ]
      }
var replyJSON = ContentService.createTextOutput(JSON.stringify(result)).setMimeType(ContentService.MimeType.JSON);
return replyJSON;
}   
}

เมื่อ เอา โค้ด นี้ ไป ไว้ แก้ไข ส ค ริ ป Google Sheet แล้ว ต่อ ไป เรา จะ โค้ด กัน ค่ะ ใน โค้ด ส่วน นี้ คือ ใน การ เพิ่ม ข้อมูล ลง ไป ใน Google Sheet ที่ เป็น ฐาน ข้อมูล ของ เรา

var userCommand = userMsg.split(",");
if(userCommand[0] == “เพิ่ม”){
sheet.getRange(values.length+1,1).setValue(userCommand[1]);
sheet.getRange(values.length+1,2).setValue(userCommand[2]);
var result = {
        "fulfillmentMessages": [
          {
            "platform": "line",
            "type": 4,
            "payload" : {
              "line":  {
                "type": "text",
                "text": "added"
              }}
          }
        ]
      }
var replyJSON =
ContentService.createTextOutput(JSON.stringify(result)).setMimeType(ContentService.MimeType.JSON);
return replyJSON;

การ เพิ่ม ข้อมูล ลง ไป ที่ Google Sheet ได้ มา จาก ตัวแปร setValue ค่ะ พูด ง่ายๆ เลย set คือ เอา ข้อมูล ใส่ ลง ไป ส่วน get เป็นการ ดึง ไป แสดง ที่ บอ ท ให้ Ответ กลับ ไป ที่ Dialogflow จำเป็น ต้อง ใส่ คำ ว่า เพิ่ม ลบ ลง ไป ที่ Обучающие фразы ด้วย เพื่อ ให้ บอ ท เรียน รู ้ เรา มา ดู ตัวอย่าง กัน ดี กว่า

จาก นั้น เรา พิ ม ว่า เพิ่ม แล้ว ขั้น ด้วย , และ ใส่ ข้อมูล สินค้า และ จำนวน ลง ส่วน นี้ จะ อยู่ ใน โค้ด ส่วน ค่ะ ให้ ค่า เข้า เป็น Массив มา แล้ว split ด้วย («,») ค่ะ และ เงื่อนไข อยู่ ที่ เรา ต้อง พิ ม ว่า เพิ่ม นำ หน้า จาก โค้ด if (userCommand [0] == «เพิ่ม»)

var userCommand = userMsg.split(",");
if(userCommand[0] == “เพิ่ม”){

ส่วนอยากให้เพิ่มข้อมูลส่วนไหนก็จะใช้คำสั่ง

sheet.getRange (values.length + แถว ที่ ต้องการ บวก 1 จาก ขอบเขต ที่ กำหนด, คอลัมน์ ที่ ต้องการ) .setValue (userCommand [Arrey ช่อง ที่ ต้องการ]);

ถ้าใครตามไม่ทันกัน ขอบเขตที่กำหนดหมายถึงอะไร จากโค้ดด้านล่างคือโค้ดที่ไว้กำหนดขอบเขตว่าเราจะให้ข้อมูลของเราแก้ไขได้ตั้งแต่ตรงไหน

var values = sheet.getRange(2, 1, sheet.getLastRow(),sheet.getLastColumn()).getValues();

จาก ตัวอย่าง โค้ด เรา อยาก ให้ ค่า ที่ ที่ บอ ท ไป ใส่ ไว้ ทั้ง 2 คอลัมน์ เรา ต้อง กำหนด โค้ด ทั้ง สอง คอลัมน์ ไหน ใส่ Массив ตัว ที่ เท่าไร

ส่วน เวลา เรา เพิ่ม ข้อมูล ลง ไป Google Sheet แล้ว ให้ ตอบ มา ด้วยว่า สำเร็จ หรือ ไม่ จะ อยู่ ส่วน นี้ ใน กรอบ แดง คือ คำ ที่ จะ กลับ หลังจาก ที่ เพิ่ม Google Sheet สำเร็จ แล้ว และ จะ ส่ง ข้อมูล จาก การ ответJSON

ต่อไปเราจะเพิ่มข้อมูลเหมือนเดิมแต่จะระบุวันที่เพิ่มลงไปและเพิ่มการระบุแผ่นงานลงไปด้วยค่ะ พูดแล้วก็ลงไปดูโค้ดด้านล่างได้เลย

โดย โค้ด ด้าน ล่าง จะ ใส่ ข้อมูล 4 อย่าง ด้วย กัน ชื่อ แผ่น งาน, ID สินค้า, วัน ที่, ข้อความ ที่ ต้องการ ใส่ เช่น แผ่น 1,0012,1-июн-2019, สั่ง ซื้อ ของ ใน ส ต็ อก เพิ่ม เป็นต้น

var ss = SpreadsheetApp.openByUrl("ชื่อ URL แผ่นงานของเรา");
function doPost(e)
{ 
 var data = JSON.parse(e.postData.contents)
 var userMsg = data.originalDetectIntentRequest.payload.data.message.text;
 
 var userCommand = userMsg.split(“,”);
 var sheet = ss.getSheetByName(userCommand[0]);
var values = sheet.getRange(1, 1, sheet.getLastRow(),sheet.getLastColumn()).getValues();
for(var i = 0;i<values.length; i++)
 { 
 var d = []
 if(values[i][1].toString() == userCommand[1])
 {
for(var j = 1 ;j<values.length; j++)
 {
var formattedDate = Utilities.formatDate(new Date(sheet.getRange(1,j).getValue().toString()),
“GMT+7”,“d-MMM-yyyy”);
 if(formattedDate == userCommand[2])
 {
 sheet.getRange(i+1,j).setValue(userCommand[3]);
var result = { “fulfillmentMessages”: [{“platform”: “line”,”type”: 4,”payload” : {“line”: {“type”: “text”,”text”: “บันทึกเรียบร้อย”}}}]}
var replyJSON = ContentService.createTextOutput(JSON.stringify(result)).setMimeType(ContentService.MimeType.JSON);
return replyJSON;
 
 }
 }
var result = { “fulfillmentMessages”: [{“platform”: “line”,”type”: 4,”payload” : {“line”: {“type”: “text”,”text”: “ไม่พบวันที่”}}}]}
var replyJSON = ContentService.createTextOutput(JSON.stringify(result)).setMimeType(ContentService.MimeType.JSON);
return replyJSON;
 
 }
 }
var result = { “fulfillmentMessages”: [{“platform”: “line”,”type”: 4,”payload” : {“line”: {“type”: “text”,”text”: “ไม่พบ ID สินค้า”}}}]}
var replyJSON = ContentService.createTextOutput(JSON.stringify(result)).setMimeType(ContentService.MimeType.JSON);
return replyJSON;
}

ต่อ ไป จะ อธิบาย แล้ว นะ คะ ใน กรณี นี้ เรา เรา ต้องการ ระบุ แผ่น งาน จะ เพิ่ม ลง ไป ใน แผ่น งาน ไหน เรียก แผ่น งาน ผ่าน ระบุ Массив ช่อง ที่ 0 มา การ เรียก ใช้ ชื่อ แผ่น งาน ของ เรา

ต่อ ไป จะ เป็นการ ระบุ ID สินค้า โดย ให้ [i] [1] หมาย ถึง ถ้า เจอ ID ของ i คอลัมน์ ที่ 1 มี ค่า เท่ากับ Массив ช่อง ที่ 1 ให้ เช็ค เงื่อนไข ได้ เลย เช่น เรา ใส่ ไป ว่า 0012 มัน ไป เช็ค หา ID 0012 ให้ เรา นั้น เอง

for(var i = 0;i<values.length; i++)
 { 
 var d = []
 if(values[i][1].toString() == userCommand[1])
 {

เมื่อ หา ID เจอ แล้ว จะ เข้า เงื่อนไข ใน การ เช็ค วัน ที่ Массив ช่อง ที่ 2 ค่ะ โดย ที่ ใช้ การ ระบุ วัน ที่ นั้น เรา ต้อง ใช้ หลักการ นี้ ค่ะ โดย การ วัน ที่ เรา เลือก การ ใส่ วัน ที่ แบบ д-МММ-ггг เช่น 1-июн-2019 แบบ นี้

และ เรา ใช้ formatDate จาก Google App Scrpit ค่ะ สามารถ เข้าไป อ่าน เพิ่มเติม ได้

เมื่อ เช็ค เจอ วัน ที่ แล้ว ใช้ setValue จาก Array ช่อง ที่ 3 มา ใส่ ลง ไป ใน แผ่น เท่า นี้ ก็ เพิ่ม ลง ไป ใน แผ่น งาน ได้ แล้ว ค่ะ

ส่วน ตรง นี้ เมื่อ ทำงาน เพิ่ม ข้อมูล Google Sheet ได แล้ว เรา เพียง แค่ ให้ บอ ответить กลับ มา แจ้ง เรา ว่า บันทึก เรียบร้อย แล้ว

ส่วนตรงนี้ให้บอทเช็คเวลาที่เราใส่ข้อมูลไม่ครบ ไม่ตรง หรือบอทหาข้อมูลเราไม่เจอ

เรา มา ดู ตัวอย่าง ที่ Google Sheet และ Line ChatBot กัน ดี กว่า

เมื่อกรอกข้อมูลตามแบบฟอร์มแล้วจะได้ผลแบบนี้ค่ะ

จากทั้งหมดที่เราได้อธิบายหวังว่าทุกคนจะเข้าใจและสามารถเอาไปประยุกต์ใช้กันนะคะ สำหรับวันนี้พอเท่านี้ก่อน ถ้ามีเรื่องราวดีๆอีก เราจะมาแบ่งปันให้เพื่อนๆได้อ่านกันอีกแน่นอนค่ะ