Sto tentando di accedere a un foglio di calcolo Google privato utilizzando Javascript. Ho autorizzato con successo con OAuth2.0 e posso visualizzare un elenco di tutti i miei documenti di Google Drive. Quello che non riesco a fare è entrare in un foglio di calcolo specifico. Il codice è il seguente con il relativo foglio di calcolo nella funzione "retrieve AllFiles". Molto di questo viene estratto dai tutorial di Google.API Google Spreadsheets con OAuth2.0 utilizzando Javascript
var clientId = 'working';
var apiKey = 'working';
var scopes = 'https://www.googleapis.com/auth/drive.file https://www.googleapis.com/auth/drive https://spreadsheets.google.com/feeds';
function handleClientLoad() {
console.log('inside handleClientLoad function');
gapi.client.setApiKey(apiKey);
window.setTimeout(checkAuth,1);
}
function checkAuth() {
console.log('inside checkAuth function');
gapi.auth.authorize({client_id: clientId, scope: scopes, immediate: true}, handleAuthResult);
console.log('finished checkAuth function');
}
function handleAuthResult(authResult) {
console.log('inside handleAuthResult function');
var authButton = document.getElementById('authButton');
authButton.style.display = 'none';
if (authResult && !authResult.error) {
//Access token has been succesfully retrieved, requests can be sent to the API.
apiCalls();
} else {
//No access token could be retrieved, show the button to start the authorization flow.
authButton.style.display = 'block';
authButton.onclick = function() {
gapi.auth.authorize({client_id: clientId, scope: scopes, immediate: false}, handleAuthResult);
};
}
}
function apiCalls() {
console.log('inside apiCalls function');
gapi.client.load('drive', 'v2', function() {
retrieveAllFiles(callback);
});
}
function retrieveAllFiles(callback) {
$.get('http://spreadsheets.google.com/feeds/spreadsheets/private/full', function(data) {
console.log('get request processed');
console.log(data);
});
console.log('inside retrieveAllFiles function');
var retrievePageOfFiles = function(request, result) {
request.execute(function(resp) {
result = result.concat(resp.items);
var nextPageToken = resp.nextPageToken;
if (nextPageToken) {
request = gapi.client.drive.files.list({
'pageToken': nextPageToken
});
retrievePageOfFiles(request, result);
} else {
callback(result);
}
});
}
var initialRequest = gapi.client.drive.files.list();
retrievePageOfFiles(initialRequest, []);
}
function callback(result) {
console.log('all should be loaded at this point');
console.log(result);
$('#drive-list').append('<ul class="items"></ul>');
$.map(result, function(v,i){
$('.items').append('<li>' + v.title + ':' + v.id + '</li>');
});
}
Quindi, per essere chiari, il risultato finale è attualmente un elenco di tutti i miei documenti di Google Drive, ma non console.log per "ottenere i dati elaborati". Non ricevo alcun messaggio di errore nella console, quindi non posso dire cosa sta succedendo.
Grazie.
Potrebbe dirmi come ottenere il clientID per SpreadSheets? Grazie! – VladL
Vai a [Google's Developers Console] (https://console.developers.google.com/project). Creare un nuovo progetto o accedere a un progetto esistente. Nella barra laterale sinistra, vai alla sezione "Credenziali" sotto "API e auth". Ha una sezione chiamata 'ClientID' e dovresti essere in grado di scoprirne di più. – Josh