我正在开发一个带谷歌日历的项目,直到现在我能够在其上创建日历插入/删除/修改事件,但我找不到通过'calendarID'删除日历的方法。我正在使用javascript
这是google开发人员的“java”示例脚本,但不起作用:
// Initialize Calendar service with valid OAuth credentials
Calendar service = new Calendar.Builder(httpTransport, jsonFactory, credentials)
.setApplicationName("applicationName").build();
// Delete a calendar
service.calendars().delete("secondaryCalendarId").execute();
这是我正在处理的代码:
<script src="js/jquery.js" type="text/javascript"></script>
<script src="js/bootstrap.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$(".btnCalCreate").hide();
$("#btnCalCreate").click(function(){
createCalendar();
});
});
// date variables
var now = new Date();
today = now.toISOString();
var twoHoursLater = new Date(now.getTime() + (2 * 1000 * 60 * 60));
twoHoursLater = twoHoursLater.toISOString();
// Google api console clientID and apiKey
var clientId = 'xxxxxxxxxxxxx-xxxxxxxxxxxxxxxxxxxxxxxxxxxxx.apps.googleusercontent.com';
var apiKey = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
var scopes = 'https://www.googleapis.com/auth/calendar';
// OAuth2 functions
function handleClientLoad() {
gapi.client.setApiKey(apiKey);
window.setTimeout(checkAuth, 1);
}
function checkAuth() {
gapi.auth.authorize({ client_id: clientId, scope: scopes, immediate: true }, handleAuthResult);
}
// show/hide the 'authorize' button, depending on application state
function handleAuthResult(authResult) {
var authorizeButton = document.getElementById('authorize-button');
var eventButton = document.getElementById('btnCreateEvents');
var eventDelButton = document.getElementById('btnDeleteEvents');
var eventGetList = document.getElementById('btnGetCalendarlist');
var eventCreateCal = document.getElementById('btnCalCreate');
var resultPanel = document.getElementById('result-panel');
var resultTitle = document.getElementById('result-title');
if (authResult && !authResult.error) {
$(".panel-login").text('Login in corso...');
authorizeButton.style.visibility = 'hidden'; // if authorized, hide button
resultPanel.className = resultPanel.className.replace(/(?:^|\s)panel-danger(?!\S)/g, '')// remove red class
resultPanel.className += ' panel-success'; // add green class
resultTitle.innerHTML = 'Accesso Eseguito'; // display 'authorized' text
//eventButton.style.visibility = 'visible';
//eventDelButton.style.visibility = 'visible';
//eventGetList.style.visibility = 'visible';
eventCreateCal.style.visibility = 'visible';
$('#btnCalCreate').insertBefore('#authorize-button');
$("#txtEventDetails").attr("visibility", "visible");
} else { // otherwise, show button
authorizeButton.style.visibility = 'visible';
$("#txtEventDetails").attr("visibility", "hidden");
//eventButton.style.visibility = 'hidden';
//eventDelButton.style.visibility = 'hidden';
//eventGetList.style.visibility = 'hidden';
eventCreateCal.style.visibility = 'hidden';
resultPanel.className += ' panel-danger'; // make panel red
authorizeButton.onclick = handleAuthClick; // setup function to handle button click
}
getAvailableCalendars();
}
// function triggered when user authorizes app
function handleAuthClick(event) {
gapi.auth.authorize({ client_id: clientId, scope: scopes, immediate: false }, handleAuthResult);
return false;
}
function refreshICalendarframe() {
var iframe = document.getElementById('divifm')
iframe.innerHTML = iframe.innerHTML;
}
// setup event details
// function load the calendar api and make the api call
function makeApiCall() {
var eventResponse = document.getElementById('event-response');
gapi.client.load('calendar', 'v3', function () { // load the calendar api (version 3)
var request = gapi.client.calendar.events.insert
({
'calendarId': 'xxxxxxxxxxxxxxx80g@group.calendar.google.com', // calendar ID
"resource": resource // pass event details with api call
});
// handle the response from our api call
request.execute(function (resp) {
if (resp.status == 'confirmed') {
eventResponse.innerHTML = "Event created successfully. View it <a href='" + resp.htmlLink + "'>online here</a>.";
eventResponse.className += ' panel-success';
eventResponse.className += ' panel-LIST';
refreshICalendarframe();
} else {
document.getElementById('event-response').innerHTML = "There was a problem. Reload page and try again.";
eventResponse.className += ' panel-danger';
}
});
});
}
var resource = {
"summary": "MyEvent",
"start": {
"dateTime": today
},
"end": {
"dateTime": twoHoursLater
},
"description":"We are organizing events",
"location":"US",
"attendees":[
{
"email":"xyz@gmail.com",
"displayName":"Shaveta",
"organizer":true,
"self":false,
"resource":false,
"optional":false,
"responseStatus":"needsAction",
"comment":"This is event first",
"additionalGuests":3
},
{
"email":"abc@gmail.com",
"displayName":"Chatak",
"organizer":true,
"self":false,
"resource":false,
"optional":false,
"responseStatus":"needsAction",
"comment":"This is office event",
"additionalGuests":3
}
],
};
// FUNCTION TO DELETE EVENT
function deleteEvent() {
gapi.client.load('calendar', 'v3', function() {
var request = gapi.client.calendar.events.delete({
'calendarId': 'xxxxxxxxxxx@group.calendar.google.com',
'eventId': '8xxxxxxxxxj0vh50d5urouo74'
});
request.execute(function(resp) {
alert(resp.status);
if (resp.status == 'confirmed') {
alert("Event was successfully removed from the calendar!");
}
else{
alert('An error occurred, please try again later.');
}
});
});
}
// FUNCTION DELETE CALENDAR
function deleteCalendar(){
var key = $('#input-key').val();\\ this is calendars id
alert(key);
service.calendars().delete(key).execute();
}
// FUNCTION create calendar
function createCalendar() {
var name = $('#input-name').val();
for (var i = 0; i < aID.length; i++) {
if (aID[i] === name) {
$("#input-name").after('<div class=\"text-danger\">Nome calendario già presente!</div>');
setTimeout(function(){$('.text-danger').hide();}, 800*10);
var name='';
die;
}
}
//die; // remeber to remove
// check if leght of calendar name is good
if ((name <1) || (name > 50)) {
$("#input-name").after('<div class=\"text-danger\">Nome calendario non valido!</div>');
setTimeout(function(){$('.text-danger').hide();}, 800*10);
return false;
}
var req = gapi.client.calendar.calendars.insert(
{
"resource":
{"summary": name,
"description": "mycalendar",
"timezone": "Europe/Rome"}
});
//$('.container').fadeOut(300);
//$('.gapiRequest').fadeIn(400);
$(".panel-login").text('Sending API request, please wait...');
$("#btnCalCreate").prop("disabled", true);
req.execute(function(resp) {
calendarId=resp.id;
//$('.gapiRequest').fadeOut(200);
$(".panel-login").text('Accesso Eseguito');
$("#btnCalCreate").prop("disabled", false);
//$('.container').fadeIn(300);
$('#input-key').val(calendarId);
//alert(calendarId);
});
}
var aID=[];
// FUNCTION get list of calendars
function getAvailableCalendars() {
gapi.client.load('calendar', 'v3', function() {
var request = gapi.client.calendar.calendarList.list();
request.execute(function(resp) {
var divCalendars = document.createElement('div');
divCalendars.innerHTML = '<b>CALENDARI DISPONIBILI:</b><br />'
for (var i = 0; i < resp.items.length; i++) {
var calendarID = resp.items[i].id;
var calendarSummary = resp.items[i].summary;
var a = document.createElement('a');
aID.push(calendarSummary);
//a.title = calendarSummary;
//a.innerHTML += a.title + /*' -> ' + calendarID + */'<br />';
//a.href='http://www.sardiniacultureholidays.it/intakeCalInsert.cfm?calendar=' +calendarID;
//divCalendars.appendChild(a);
//document.getElementById('calendars').appendChild(divCalendars);
/**/
}
});
});
}
</script>
<script src="https://apis.google.com/js/client.js?onload=handleClientLoad" type="text/javascript"></script>
(抱歉代码有点混乱)
经过很长时间搜索文档和示例无法找到删除日历的方法,希望你能帮我解决这个问题。
感谢您的帮助。
嗨kendi,我可以使用这样的东西吗?:
var IDCal = 'xxxxxxxxxxxxxxxxxxxxx'
function(request, response) {
$.ajax({
url: 'https://www.googleapis.com/calendar/v3/calendars/&IDCal=' + <?php echo $IDCal; ?>,
dataType: 'json',
success: function(json) {
response(resp)
}));
}
});
答案 0 :(得分:1)
所以,经过这么多尝试后,我找到了按ID删除日历的方法。
这是功能:
function deleteCalendar(){
var key = $('#input-key').val();
gapi.client.load('calendar', 'v3', function() {
var request = gapi.client.calendar.calendars.delete({
'calendarId': key
});
request.execute(function(resp) {
if (typeof resp.code === 'undefined') {
alert("Calendar was successfully removed!");
}else{
alert('An error occurred... Error code: '+ resp.code +' - Message: '+resp.message);
}
});
});
}