var token = 'xxx'; //Channel access token
function doPost(e) {
var json = JSON.parse(e.postData.contents); // อ่านข้อมูลที่ส่งมาจาก LINE
var events = json.events;
// วนลูปทุก event ที่ได้รับ
events.forEach(function(event) {
var eventType = event.type;
if (eventType === 'follow' || eventType === 'message') {
var userId = event.source.userId; // ดึง userId ของผู้ใช้
saveUserProfile(userId); // เรียกฟังก์ชันเพื่อดึงข้อมูลโปรไฟล์และบันทึกลง Google Sheet
if (eventType === 'message') {
var replyToken = event.replyToken;
var messageText = event.message.text; // ข้อความที่ผู้ใช้ส่งมา
var replyMessage = 'ขอบคุณที่ส่งข้อความมาหาเรา: ' + messageText;
// ส่งข้อความตอบกลับไปยังผู้ใช้
replyToUser(replyToken, replyMessage);
}
}
});
return ContentService.createTextOutput(JSON.stringify({ 'status': 'success' })).setMimeType(ContentService.MimeType.JSON);
}
function saveUserProfile(userId) {
var url = 'https://api.line.me/v2/bot/profile/' + userId; // API ดึงโปรไฟล์
var options = {
'method': 'get',
'headers': {
'Authorization': 'Bearer ' + token
}
};
// เรียก API เพื่อดึงข้อมูลโปรไฟล์ผู้ใช้
var response = UrlFetchApp.fetch(url, options);
var profile = JSON.parse(response.getContentText());
var displayName = profile.displayName; // ชื่อผู้ใช้
var pictureUrl = profile.pictureUrl; // รูปโปรไฟล์ผู้ใช้ (ถ้ามี)
// บันทึกข้อมูลลงใน Google Sheet
var sheet = SpreadsheetApp.getActive().getSheetByName('Users'); // ชื่อชีทที่เก็บข้อมูล
var found = sheet.getRange(1, 1, sheet.getLastRow(), 1).getValues().flat().indexOf(userId);
// ถ้ายังไม่มี userId ใน Sheet ให้เพิ่มข้อมูลใหม่
if (found === -1) {
sheet.appendRow([userId, displayName, pictureUrl, new Date()]);
}
}
function replyToUser(replyToken, message) {
var url = 'https://api.line.me/v2/bot/message/reply';
var payload = {
replyToken: replyToken,
messages: [
{
type: 'text',
text: message
}
]
};
var options = {
'method': 'post',
'headers': {
'Authorization': 'Bearer ' + token,
'Content-Type': 'application/json'
},
'payload': JSON.stringify(payload)
};
UrlFetchApp.fetch(url, options);
}
{fullwidth}