我想在谷歌日曆中使用PHP(通過cURL轉換爲GAS)在Google App Engine中創建日曆事件我不想使用Google PHP CLIENT API。在PHP GAE中使用cURL訪問GAS Script日曆事件
我想用GAS(谷歌Apps腳本)創建日曆events.So我用捲曲呼叫GAS腳本PHP GAE。但我得到一些錯誤,而不是
下面我的腳本:
1.index.php
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script>
$(document).ready(function() {
$('#cal_btn').click(function() {
$.ajax({
type: "POST",
'url': "create_event.php",
data:{'option':'create'},
success: function(data){
alert(data);
},
error: function(data){
alert('error in getting'+JSON.stringify(data));
}
});
});
});
</script>
</head>
<body>
<input type="button" id="cal_btn" value="CLICK HERE" />
</body>
</html>
2.create_event.php
<?php
$url='https://script.google.com/macros/s/AKfycbx7yhm5mA0AgXcYfVJmuzTQOJlOfiPLc-qlajM2qrdWKtPCfQA/exec';
$data=array('flag'=>1,'calendar_id'=>'[email protected]','startdate'=>'2015-10-14','startdate_starttime'=>'10:00:00','startdate_endtime'=>'10:30:00','enddate'=>'2015-10-31','enddate_starttime'=>'10:00:00','enddate_endtime'=>'10:30:00');
$headers = array("Content-Type:multipart/form-data");
$params = '';
foreach($data as $key=>$value)
$params .= $key.'='.$value.'&';
$params = trim($params, '&');
$ch = curl_init();
$data=http_build_query($data);
curl_setopt($ch, CURLOPT_URL, $url.'?'.$params);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_ENCODING, "gzip,deflate");
$response = curl_exec($ch);
curl_close($ch);
print_r($response);
3.Calendar.gs
//CONVERT INPUT DATE TO CREATE CALENDAR EVENT
function CalenderTime_Convertion(calenderIDcode,CSRC_startdate, CSRC_startdate_starttime, CSRC_startdate_endtime)
{
var cal = CalendarApp.getCalendarById(calenderIDcode);
var stime_in=CSRC_startdate_starttime.split(':');
var stime_out=CSRC_startdate_endtime.split(':');
var startdate=CSRC_startdate.split('-');//START DATE
var month = startdate[1];
var day = startdate[2];
var year = startdate[0];
var startdate = month + '/' + day + '/' + year;//string format of startdate
var startdate1 = month + '/' + day + '/' + year;//string format of startdate
startdate=new Date(startdate)
startdate1=new Date(startdate1)
var enddate=CSRC_startdate.split('-');
var month1 = enddate[1];
var day1 = enddate[2];
var year1 = enddate[0];
var enddate = month1 + '/' + day1 + '/' + year1;//string format of enddate
var enddate1 = month1 + '/' + day1 + '/' + year1;//string format of enddate
enddate=new Date(enddate)
enddate1=new Date(enddate1)
//CHECKIN DELETION
var checkin=startdate;
var checkin1=startdate1;
var starttime=checkin.setHours(checkin.getHours() + stime_in[0]);
var start_time=checkin.setMinutes(checkin.getMinutes() + stime_in[1]);
var startdate_deletion=new Date(start_time);
var starttime1=checkin1.setHours(checkin1.getHours() + stime_out[0]);
var start_time1 = checkin1.setMinutes(checkin1.getMinutes() + stime_out[1]);//assigning time(hour) to enddate
var startdate1_deletion=new Date(start_time1);
var returnvalues=[startdate_deletion,startdate1_deletion];
return returnvalues;
}
//Function
function calendarcreation(calenderIDcode,startdate,startdate_starttime,startdate_endtime,enddate,enddate_starttime,enddate_endtime){
try{
var cal = CalendarApp.getCalendarById(calenderIDcode) ;
var initialsdate=startdate;
var initialedate=enddate;
var startevents=CalenderTime_Convertion(calenderIDcode,startdate, startdate_starttime, startdate_endtime);
cal.createEvent('CHECKIN', startevents[0], startevents[1])
var endevents=CalenderTime_Convertion(calenderIDcode,enddate,enddate_starttime,enddate_endtime)
var c= cal.createEvent('CHECKOUT', endevents[0], endevents[1])
return 'Event created successfully';
}
catch(err){
return 'SCRIPT ERROR' + err;
}
}
4.app.yaml
application: application name
version: 1
runtime: php55
api_version: 1
handlers:
- url: /create_event.php
script: create_event.php
- url: .*
script: index.php
login: required
我部署在GAE這個項目。主窗體有一個按鈕。如果我點擊那個按鈕,它應該通過php中的ajax調用GAS腳本。
但我得到了這個PLZ參考下面的圖像。
這是在警告下面,供大家參考內容:
<!DOCTYPE html><html lang="en"> <head> <meta charset="utf-8"> <meta content="width=300, initial-scale=1" name="viewport"> <meta name="description" content="Google Drive is a free way to keep your files backed up and easy to reach from any phone, tablet, or computer. Start with 15GB of Google storage – free."> <meta name="google-site-verification" content="LrdTUW9psUAMbh4Ia074-BPEVmcpBxF6Gwf0MSgQXZs"> <title>Meet Google Drive – One place for all your files</title> <style> @font-face { font-family: 'Open Sans'; font-style: normal; font-weight: 300; src: local('Open Sans Light'), local('OpenSans-Light'), url(//fonts.gstatic.com/s/opensans/v13/DXI1ORHCpsQm3Vp6mXoaTYnF5uFdDttMLvmWuJdhhgs.ttf) format('truetype');}@font-face { font-family: 'Open Sans'; font-style: normal; font-weight: 400; src: local('Open Sans'), local('OpenSans'), url(//fonts.gstatic.com/s/opensans/v13/cJZKeOuBrn4kERxqtaUH3aCWcynf_cDxXwCLxiixG1c.ttf) format('truetype');} </style> <style> h1, h2 { -webkit-animation-duration: 0.1s; -webkit-animation-name: fontfix; -webkit-animation-iteration-count: 1; -webkit-animation-timing-function: linear; -webkit-animation-delay: 0; } @-webkit-keyframes fontfix { from { opacity: 1; } to { opacity: 1; } } </style><style> html, body { font-family: Arial, sans-serif; background: #fff; margin: 0; padding: 0; border: 0; position: absolute; height: 100%; min-width: 100%; font-size: 13px; ...2Fs%2FAKfycbx7yhm5mA0AgXcYfVJmuzTQOJlOfiPLc-qlajM2qrdWKtPCfQA%2Fexec%3Fflag%3D1%26calendar_id%3Dexpatsint.com_gacf9d74moinqjet0ss87q8f7k%40group.calendar.google.com%26startdate%3D2015-10-14%26startdate_starttime%3D10%3A00%3A00%26startdate_endtime%3D10%3A30%3A00%26enddate%3D2015-10-31%26enddate_starttime%3D10%3A00%3A00%26enddate_endtime%3D10%3A30%3A00\x26followup=https%3A%2F%2Fscript.google.com%2Fmacros%2Fs%2FAKfycbx7yhm5mA0AgXcYfVJmuzTQOJlOfiPLc-qlajM2qrdWKtPCfQA%2Fexec%3Fflag%3D1%26calendar_id%3Dexpatsint.com_gacf9d74moinqjet0ss87q8f7k%40group.calendar.google.com%26startdate%3D2015-10-14%26startdate_starttime%3D10%3A00%3A00%26startdate_endtime%3D10%3A30%3A00%26enddate%3D2015-10-31%26enddate_starttime%3D10%3A00%3A00%26enddate_endtime%3D10%3A30%3A00\x26service=wise\x26passive=1209600'); </script><script> (function(){ var signinInput = document.getElementById('signIn'); gaia_onLoginSubmit = function() { try { gaia.loginAutoRedirect.stop(); } catch (err) { // do not prevent form from being submitted } try { document.bg.invoke(function(response) { document.getElementById('bgresponse').value = response; }); } catch (err) { document.getElementById('bgresponse').value = ''; } return true; } document.getElementById('gaia_loginform').onsubmit = gaia_onLoginSubmit; var signinButton = document.getElementById('signIn'); gaia_attachEvent(window, 'load', function(){ gaia_scrollToElement(signinButton); }); })();</script> </body></html>
API控制檯登錄:
A
2015-10-15 22:19:38.893
200
66.32 KB
194 ms
/create_event.php
345.989.33.33 - mailname [15/Oct/2015:07:19:38 -0700] "POST /create_event.php HTTP/1.1" 200 67911 http://domain.com/ "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:41.0) Gecko/20100101 Firefox/41.0" "domain.com" ms=194 cpu_ms=15 cpm_usd=0.007657818 instance=0054444c61b184393if7393893333 app_engine_release=1.9.27 trace_id=-
plz幫助我。哪裏不對?這有可能用這種方式嗎?我正在使用cURL來調用其他GAS項目,如G文檔,表格,除了此G CAL外,它工作正常。
謝謝傑拉爾多,我會檢查 – Sattanathan