Skip to content

Instantly share code, notes, and snippets.

@neno-tech
Created January 15, 2021 03:52
Show Gist options
  • Save neno-tech/926388f1047a725fcc67e60fb5a2ced0 to your computer and use it in GitHub Desktop.
Save neno-tech/926388f1047a725fcc67e60fb5a2ced0 to your computer and use it in GitHub Desktop.
webapp แจ้งพิกัด+แผนที่+ส่งไลน์แจ้งเตือน
function doGet(e) {
return HtmlService.createTemplateFromFile("index").evaluate()
}
function userClick(data) {
let ss = SpreadsheetApp.openById('xxx');
let sheet = ss.getSheets()[0];
let response = Maps.newGeocoder().reverseGeocode(data.lat, data.lon);
let geoAddress = response.results[0].formatted_address;
sheet.appendRow([data.username,Utilities.formatDate(new Date(), "GMT+7", "MM/dd/yyyy HH:mm:ss"), `${data.lat},${data.lon}`, geoAddress])
var strYear543 = parseInt(Utilities.formatDate(new Date(), "Asia/Bangkok", "yyyy")) + 543;
var strhour=Utilities.formatDate(new Date(), "Asia/Bangkok", "HH");
var strMinute=Utilities.formatDate(new Date(), "Asia/Bangkok", "mm");
var strMonth1 = Utilities.formatDate(new Date(), "Asia/Bangkok", "M");
var strMonthCut1 = ["", "มกราคม", "กุมภาพันธ์", "มีนาคม", "เมษายน", "พฤษภาคม", "มิถุนายน", "กรกฎาคม", "สิงหาคม", "กันยายน", "ตุลาคม", "พฤศจิกายน", "ธันวาคม"]
var strMonthThai = strMonthCut1[strMonth1];
var strDay = Utilities.formatDate(new Date(), "Asia/Bangkok", "d"); // d ไม่มี 0 นำ dd มี 0 นำ
var daytime=strDay+' '+strMonthThai+' '+strYear543+ ' เวลา '+strhour+':'+strMinute+' น.';
var text_data1 = '📣 แจ้งพิกัดการเช็คอิน\n';
text_data1 += '⏰วัน-เวลา\n'+daytime+'\n👨‍💼ชื่อ-นามสกุล\n'+data.username+'\n📌พิกัด\n'+data.lat+","+data.lon + '\n🏡ที่อยู่\n'+geoAddress
var latitude = data.lat
var longitude = data.lon
var map = Maps.newStaticMap()
.setSize(600,600) //(Max:1300 X 1300
.setLanguage('TH')
.setMobile(true)
.setMapType(Maps.StaticMap.Type.HYBRID)
map.addMarker(latitude, longitude)
var mapBlob = map.getBlob()
var mapUrl = map.getMapUrl()
sendHttpPostImage(text_data1,mapBlob)
}
function sendHttpPostImage(mapUrl, mapBlob){
var token = "xxx";
var formData = {
'message' : '\n'+mapUrl,
'imageFile': mapBlob
}
var options =
{
"method" : "post",
"payload" : formData, // message, imageFile, formData, Post
"headers" : {"Authorization" : "Bearer "+ token}
};
UrlFetchApp.fetch("https://notify-api.line.me/api/notify",options);
}
<!DOCTYPE html>
<html lang="en">
<head>
<title>Bootstrap Example</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-giJF6kkoqNQ00vy+HMDP7azOuL0xtbfIcaT9wjKHr8RbDVddVHyTfAAsrekwKmP1" crossorigin="anonymous">
<script src="https://unpkg.com/sweetalert/dist/sweetalert.min.js"></script>
</head>
<body>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta1/dist/js/bootstrap.bundle.min.js" integrity="sha384-ygbV9kiqUc6oa4msXn9868pTtWMgiQaeYH7/t7LECLbyPA2x65Kgf80OJFdroafW" crossorigin="anonymous"></script>
<div class="container">
<h2>บันทึกการเช็คอิน</h2>
<form id="mainform">
<div class="form-group">
<label for="username">ชื่อ สกุล:</label>
<input type="text" class="form-control" id="username">
</div>
<br>
<button id="btn" class="btn btn-primary">บันทึกข้อมูล</button>
</form>
</div>
<script>
getLocation()
let lat, lon
function getLocation() {
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(position => {
lat = position.coords.latitude
lon = position.coords.longitude
});
}
}
</script>
<script>
document.getElementById("btn").addEventListener("click", saveData)
function saveData() {
event.preventDefault()
var data = {}
data.username = document.getElementById("username").value
data.lat = lat
data.lon = lon
google.script.run.withSuccessHandler(saveSuccess).userClick(data)
document.getElementById("mainform").reset()
}
function saveSuccess(result) {
if (result) {
sweetAlert({
text: "บันทึกข้อมูลเรียบร้อยแล้ว",
icon: "success",
timer: 5000
})
}
}
</script>
</body>
</html>
@nacfe1587
Copy link

กิจกรรม doGet ( e ) {
ส่งความถี่HtmlService createTemplateFromFile ( "ดัชนี" ) . ประเมิน( )

ข้อมูล ผู้ใช้Click ( ข้อมูล) {
ให้ ss = SpreadsheetApp ​openById ( 'xxx' ) ;
ให้ งาน= ss รับชีต ( ) [ 0 ] ;
ให้ ตอบ กลับ= Maps แทน Geocoder ( ) . ReverseGeocode ( data.lat , data.lon ) ;
ให้ geoAddress = การตอบสนองผลลัพธ์[ 0 ] . จัดรูปแบบ_ที่อยู่;
งานappendRow ( [ data .username , Utilities . formatDate ( new Date ( ) , "GMT+7" , "MM/dd/yyyy HH :mm:ss" ) , $ { data .lat } , $ { data . lon } , ทางคืนนี้] )

var strYear543 = parseInt ( Utilities . formatDate ( วันที่เดท ( ) , "Asia/Bangkok" , "yyyy" ) ) + 543 ;
var strhour = ยูทิลิตี้formatDate ( วันที่เดท ( ) , "เอเชีย/กรุงเทพฯ" , "HH" ) ;
var strMinute = ยูทิลิตี้formatDate ( วันที่เดท ( ) , "เอเชีย/กรุงเทพฯ" , "mm" ) ;
var strMonth1 = ยูทิลิตี้formatDate ( วันที่อัพเดต ( ) , "เอเชีย/กรุงเทพฯ" , "M" ) ;
var strMonthCut1 = [ "" , "มกราคม" , "กุมภาพันธ์" , "มีนาคม" , " เมษายน" , "อาจ" , "มิถุนายนายนายน" , "กรกฎาคม" , "สิงหาคม" , "ยายกันน" , " กล่าวถึง " , "พฤศจิกายน" , "ธันวาคม" ]
var strMonthThai = strMonthCut1 [ strMonth1 ] ;
var strDay = ยูทิลิตี้formatDate ( วันที่เดท ( ) , "เอเชีย/กรุงเทพฯ" , "d" ) ; // d ไม่มี 0 นำ dd มี 0 นำ
var กลางวัน= strDay + ' ' + strMonthThai + ' ' + strYear543 + ' เวลา ' + strhour + ':' + strMinute + ' น.' -

var text_data1 = '📣 แจ้งพิกัดการเช็คอิน\n' ;
text_data1 += '⏰วัน-เวลา\n' + ' \ n👨‍💼 ชื่อ- นามสกุล\n' + data บันทึก+ '\n📌 Location\n' + ข้อมูล. ละติจูด+ "," + ข้อมูล. lon + '\n หอพัก\n' + geoAddress

ละติจูด var = ข้อมูล​ละติจูด
ลองจิจูด var = ข้อมูล​โหลน
var map = แผนที่​ใหม่ StaticMap ( )

  • setSize ( 600 , 600 ) //(สูงสุด:1300 X 1300
    . ตั้งค่าภาษา( 'TH' )
  • setMobile ( จริง)
  • setMapType ( แผนที่. ประเภทStaticMap . HYBRID )

เมพ. addMarker ( ละติจูด, ลองจิจูด)
var mapBlob = แผนที่​รับหยด( )
var mapUrl = แผนที่​รับ MapUrl ( )
ส่งHttpPostImage ( text_data1 , mapBlob )

วัน sendHttpPostImage ( mapUrl , mapBlob ) {
หลังจากนั้น var = "xxx" ;
var formData = {
'ข้อความ' : '\n' + mapUrl ,
'imageFile' : mapBlob

มี var =

"วิธีการ" : "โพสต์" ,
"เพย์โหลด" : formData , // วัฒนธรรม, รับรองภาพ, formData, ผู้ถือ
"ความเชื่อ" : { "การยึด" : " เป็นพิเศษ" + ความเชื่อ}
} ;

UrlFetchApp ​ดึงข้อมูล( "https://notify-api.line.me/api/notify" , รับชม) ;

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment