- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在尝试使用 Javascript 访问私有(private) Google 电子表格。我已成功获得 OAuth2.0 授权,并且可以看到我所有 Google 云端硬盘文档的列表。我似乎无法做的是进入特定的电子表格。代码如下,函数“retrieveAllFiles”中的相关电子表格代码。其中很多都是从谷歌教程中挑选出来的。
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>');
});
}
明确地说,目前的最终结果是我所有 Google Drive 文档的列表,但没有用于“获取数据处理”的 console.log。我在控制台中没有收到任何错误消息,所以我不知道发生了什么。
谢谢。
最佳答案
从一堆不同来源编译的最终解决方案,希望这会对某人有所帮助。
var scopes = 'https://spreadsheets.google.com/feeds';
var clientId = 'working';
var apiKey = 'working';
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');
console.log(gapi.auth.getToken());
var authButton = document.getElementById('authButton');
authButton.style.display = 'none';
if (authResult && !authResult.error) {
//Access token has been successfully retrieved, requests can be sent to the API.
loadClient();
} 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 loadClient() {
console.log('inside loadClient function');
var token = gapi.auth.getToken().access_token;
var urlLocation = ''; //Get this from the URL of your Spreadsheet in the normal interface for Google Drive.
//This gives a spitout of ALL spreadsheets that the user has access to.
var url = 'https://spreadsheets.google.com/feeds/spreadsheets/private/full?access_token=' + token;
//This gives a list of all worksheets inside the Spreadsheet, does not give actual data
var url = 'https://spreadsheets.google.com/feeds/worksheets/' + urlLocation + '/private/full?access_token=' + token;
//This gives the data in a list view - change the word list to cells to work from a cell view and see https://developers.google.com/google-apps/spreadsheets/#working_with_cell-based_feeds for details
var url = 'https://spreadsheets.google.com/feeds/list/' + urlLocation + '/od6/private/full?access_token=' + token;
console.log(url);
$.get(url, function(data) {
console.log(data);
});
}
关于javascript - 使用 OAuth2.0 使用 Javascript 的 Google Spreadsheets API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14238935/
我试图找出对电子表格建模的最佳方法(从数据库的角度来看),考虑到: 电子表格可以包含可变数量的行。 电子表格可以包含可变数量的列。 每一列可以包含一个值,但其类型未知(整数、日期、字符串)。 生成包含
我在谷歌表格中有一个整列的数组公式,例如C1中的以下公式 ArrayFormula(A1:A+B1:B) A列和B列有数据。 如果我要捕获一行并将其移动到另一个位置。一旦我移动它,该行 C 列中的相应
我正在尝试使用 Net::Google::Spreadsheets 读出(稍后甚至可能写入)Google 电子表格。 最样板脚本死于“登录失败”并且没有错误: use Net::Google::Spr
-我想做什么 我想在没有身份验证的情况下使用 Google 电子表格 API Java 库从 Google 电子表格获取数据。Google 电子表格是公开发布的。我想使用以下方法:com.google
使用phpSpredSheet开始使用PHP。测试基本代码会返回错误FATAL ERROR:UNAUCAT ERROR:CLASS“PhpOffice\PhpSpreadSheet\SpreadShe
我有一个 LibreOffice Calc 电子表格,用于跟踪工作中的应收账款。每张表都列出了发票及其状态(已付、未付等)以及有关每张发票的信息。我正在尝试创建一个汇总表,其中列出了每个表中的某些数据
我只是想让列自动调整大小。我正在使用 php 电子表格,但找不到如何操作。我搜索了其他问题,但他们使用了我在 lib worksheet.php 中找不到的函数,例如 getActiveSheet()
嗨,我在我的脚本参数中传递 2 个单元格时遇到问题: function myFunction(c1, c2) { var ss = SpreadsheetApp.getActiveSpreadshee
电子表格太漂亮了!单元格可以相互链接,如果任何公式/值/单元格之一发生任何变化,一切都会正确更新! 有谁知道电子表格如何做到这一点的一般概念? 我所说的是如果 A1 = 1、A2 = 2 和 A3 =
我有一个Powershell脚本,该脚本调用Google App Script函数。 运行Powershell脚本时,我可以在GCP项目的错误报告中看到以下错误: Exception: You do
我正在编写一个AWS Lambda代码,用于使用Golang访问和更新带有URL作为输入的电子表格。到目前为止,我已经可以按照Google指南使用OAuth客户端ID在本地访问电子表格-https:/
我们正在为我们的客户构建电子表格网络应用程序。他们可以上传任何 csv (20 MB+),然后对数据执行操作(如下所列)。数据高度非结构化。 在过去的几个月里,我们尝试了几种架构: 最初,我们以二维数
我遇到过这个 sumif 公式,我在 Google 搜索 N:N 时找不到任何帮助 =sumif(N:N,"Cat",C:C) 所以我根据文档理解了 SumIf: SUMIF(range, crite
我正在使用 C# WebApi 2,存储在未安装办公室的 Azure 服务器上。 我需要创建一个 excel 文件,并且知道 GemBox 电子表格不需要在机器上安装 office。 问题是我需要文件
我正在查看CellEntry API(https://developers.google.com/gdata/javadoc/com/google/gdata/data/spreadsheet/Cel
我需要使用谷歌电子表格 API 设置 majorDimension 值。我已经阅读了文档,它只是说我可以将值设置为 ROW 或 COLUMN,但它没有讨论如何在 URL 中执行此操作。 文档:http
如何使用 google spreadsheet feeds 从多张纸中获取提要api? 以下 URL 仅从第一张工作表中获取提要。在我的 spreadsheet我有 3 work sheets我也想获
请问有人可以帮忙解决 Google 电子表格中的一个问题吗? 更改“ field ”表中一个具体列中的值后,我想在更改该值时写入有关名称和时间的日志。但我无法真正意识到,如果我正在使用电子表格“ fi
我正在尝试创建一个多表 Excel 文档,到目前为止我一直在 PHP 中完成它 - 但使用 PHPExcel 总共大约 60,000 个电子表格单元格占用了 70MB 的 RAM。 我想知道是否有人有
在我的 Perl 脚本中,我使用 Spreadsheet::WriteExcel模块创建 Excel 文件。该文件包含一个表,其大小是动态的 - 即,在创建表之前我不知道它将有多少行。我希望表格的最后
我是一名优秀的程序员,十分优秀!