标签: google-spreadsheet-api

从命令行下载/导出公共Google电子表格作为TSV?

我有一个公开(已发布)的Google电子表格,我试图以TSV形式以编程方式下载.

在我的浏览器中,Google登录处于活动状态,对于某些实际密钥$key,https://spreadsheets.google.com/feeds/download/spreadsheets/Export?key=$key&exportFormat=tsv可以工作并生成TSV文件.

但是在我的shell中:

  • curl -L "https://spreadsheets.google.com/feeds/download/spreadsheets/Export?key=$key&exportFormat=tsv" 产生一堆javascript.
  • curl -L "https://spreadsheets.google.com/feeds/download/spreadsheets/Export?key=$key&exportFormat=csv" 还会产生一堆javascript.
  • curl -L "https://docs.google.com/spreadsheet/pub?key=$key&single=true&gid=0&output=csv" 工作并生成CSV文件.
  • curl -L "https://docs.google.com/spreadsheet/pub?key=$key&single=true&gid=0&output=tsv" 产生错误信息.

(尝试使用wget产生类似的结果.)

我该如何工作?到目前为止,我能够找到的所有Google文档都面向更复杂的问题,而不是简单的下载和格式更改,如果我的问题的解决方案在某处,我还没有找到它.

curl google-sheets google-docs-api google-spreadsheet-api

17
推荐指数
3
解决办法
9761
查看次数

如何使用服务帐户创建Google电子表格并与java中的其他Google用户共享?

我有一个应用程序,我通过Google服务帐户从Analytics API收集有关我网站的大量信息.我的下一步是使用服务帐户创建电子表格,并与几个用户共享文档.

我已经在https://developers.google.com/google-apps/spreadsheets/上查看了文档,但我找不到有关服务帐户和共享文档的任何内容.

所以我的第一个问题是可能的吗?如果不是,我需要实施文档中举例说明的"使用我的个人帐户"吗?如果是的话,请你提供一个例子吗?

谢谢!

java google-api google-spreadsheet-api

16
推荐指数
1
解决办法
1万
查看次数

使用OAuth 2和服务帐户访问旧的GData API(电子表格API)

简短的问题是这是否可能,如果可能,如何?

大纲

我有一个.NET应用程序,它目前使用服务帐户使用Google Drive API访问Google Apps域中的信息.这可以正常使用google-api-dotnet-client库和代码沿着这里的示例所示的相同行- 这是目前我正在做的一个非常好的基本示例.

我现在要做的是扩展它以及使用 "新"google-api-dotnet-client库提供那些API,它使用旧的"GData"库,通过较旧的google-gdata库提供,特别是Spreadsheets API(也许还有更多).

问题

这就是出现困难的地方.前一个库完全符合我的要求,正如上面第一段中的第二个链接所证明的那样 - 以及我自己做它的事实.但是 ......虽然第二个库已经更新,除了OAuth 1.0和其他旧的auth技术之外还支持OAuth 2.0,但据我所知,从广泛的谷歌搜索和跟踪错误中可以看出,"代表我所有用户的服务帐户"我需要的操作.

我的问题是我是否遗漏了一些东西(可能很难找到或没有记载的东西),这些东西可以让我做我想做的事.如果不这样做,有什么方法可以强迫这种行为并使这两个库并排运行?

理想的解决方案

理想情况下,我希望某种方式让Google.GData.Spreadsheets.SpreadsheetsService实例能够利用Google.Apis.Authentication.Auth2Authenticator<AssertionFlowClient>我已经在使用的实例...不知何故.这种巫术有可能吗?我错过了那个显而易见的东西吗?

如果不这样做,我很高兴再次完成整个OAuth2"断言流客户端"的舞蹈,如果我不得不以某种方式让旧库可以处理.

救命?

其他想法

我考虑过 - 暂时拒绝 - 选择从头开始编写我自己的库来实现这一目标.这有两个原因:

  1. gdata库已经存在,并且已经被许多人开发,可能比我自己聪明.我不是那么傲慢,我相信我能做得更好.
  2. 我不确定这些旧API上是否支持/允许使用服务帐户方法的OAuth2.

我一直希望避免但可能不得不依赖于此处的答案的另一种方法是使用2脚OAuth 1.0来实现这一点.我宁愿不这样做,因为应用程序的某些部分依赖于一种旧的auth方法,而其他部分则使用这种新方式对我来说感觉不对.而且还有更多的问题......


更新

我已经考虑过继承GDataRequestFactory和GDataRequest的可能性,所以我可以创建自己的请求工厂,然后获取Google.Apis.Authentication.Auth2Authenticator<AssertionFlowClient>(好的,Google.Apis.Authentication.IAuthenticator无论如何的实例)的实例,它可以在调用之前调试请求.但是...... GDataRequest的构造函数是内部的,这已经阻止了我.

它真的看起来不是这个意思.

.net c# gdata-api oauth-2.0 google-spreadsheet-api

16
推荐指数
1
解决办法
6873
查看次数

在Java中使用OAuth 2.0和Google Spreadsheet API的示例是什么?

凡示例代码展示了如何使用Google Data Java Client Library其支持OAuth 2.0Google Spreadsheet API(现称Google Sheets API)?

java oauth google-spreadsheet-api google-api-java-client google-sheets-api

16
推荐指数
1
解决办法
1万
查看次数

获取Python中google电子表格api v4中的工作表和最新工作表列表

我试图在谷歌官方文档之后阅读和编写python 3中不同表单的值.虽然我能够使用rangeName = 'Class Data!A2:E'下面提到的代码块中的range属性读取某些工作表中的值:

discoveryUrl = ('https://sheets.googleapis.com/$discovery/rest?'
                    'version=v4')
    service = discovery.build('sheets', 'v4', http=http,
                              discoveryServiceUrl=discoveryUrl)

    spreadsheetId = '1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms'
    rangeName = 'Class Data!A2:E'
    result = service.spreadsheets().values().get(
        spreadsheetId=spreadsheetId, range=rangeName).execute()
    values = result.get('values', [])
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用此处示例代码编写值:

requests.append({
    'updateCells': {
        'start': {'sheetId': 0, 'rowIndex': 0, 'columnIndex': 0},
        'rows': [
            {
                'values': [
                    {
                        'userEnteredValue': {'numberValue': 1},
                        'userEnteredFormat': {'backgroundColor': {'red': 1}}
                    }, {
                        'userEnteredValue': {'numberValue': 2},
                        'userEnteredFormat': {'backgroundColor': {'blue': 1}}
                    }, {
                        'userEnteredValue': {'numberValue': 3},
                        'userEnteredFormat': {'backgroundColor': {'green': …
Run Code Online (Sandbox Code Playgroud)

python google-spreadsheet-api google-sheets-api

16
推荐指数
4
解决办法
2万
查看次数

仅使用google电子表格API删除单元格区域选择中的格式化

我正在寻找一种方法,只使用带有python的Google表格API来删除单元格范围选择的格式,而不是其内容.

目前,我唯一的解决方案是应用与普通格式相同的逻辑并将样式设置为NONE.例如,当我将边框格式设置为特定范围时,我使用:

    request_dict = {'requests': [{
                    "updateBorders": {
                      "range": {
                        "sheetId": sheetId,
                        "startRowIndex": 1,
                        "endRowIndex": raws,
                        "startColumnIndex": first_col,
                        "endColumnIndex": last_col},
                      "top": {
                        "style": "SOLID_MEDIUM",
                        "width": 1,
                        "color": {"blue": 0}},
                      "bottom": {
                        "style": "SOLID_MEDIUM",
                        "width": 1,
                        "color": {"blue": 0}},
                      "left": {
                        "style": "SOLID_MEDIUM",
                        "width": 1,
                        "color": {"blue": 0}},
                      "right": {
                        "style": "SOLID_MEDIUM",
                        "width": 1,
                        "color": {"blue": 0}},
                      "innerHorizontal": {
                        "style": "SOLID_MEDIUM",
                        "width": 1,
                        "color": {"blue": 0}},
                      "innerVertical": {
                        "style": "SOLID_MEDIUM",
                        "width": 1,
                        "color": {"blue": 0}}}}]}
body = {'requests': request_dict['requests']}
service.spreadsheets().batchUpdate(spreadsheetId=spreadsheetId,
                                   body=body).execute() …
Run Code Online (Sandbox Code Playgroud)

python google-spreadsheet-api

15
推荐指数
2
解决办法
546
查看次数

Google Spreadsheets:仅复制过滤/过滤视图行

我有两张表,联系人和邮件程序

需要将Google电子表格上的过滤/过滤视图后面的联系人:B列中的可见单元格复制到Mailer的A列.

由于行的可见性还没有开放功能,我该怎么做?我不想编写许多FILTER()代码,因为过滤器可以不断更改,它们将由用户定义...结果将始终在B列中.

请让我知道解决方案/解决方法.

最坏情况场景:在打开行可见性功能之前,我们必须手动将单元格从一个工作表复制到另一个工作表,但我希望避免这样做:)

谢谢

google-sheets google-apps-script google-spreadsheet-api

14
推荐指数
2
解决办法
3万
查看次数

无需身份验证令牌即可访问Google电子表格API

我创建了Google电子表格,并为所有人提供了编辑权限(即使没有登录也可以编辑).

这是链接.我想使用Google Spreadsheet API更新此表.但我收到了错误.我的要求是即使没有访问凭证也通过API更新工作表.

在此输入图像描述

google-authentication google-sheets google-spreadsheet-api google-developers-console

14
推荐指数
2
解决办法
1万
查看次数

Google电子表格 - 插入剪切/复制的单元格/行

Google电子表格没有像Excel中那样"插入剪切单元格"的功能.

假设我选择A4到B5,按Ctrl + X.
然后我将选择移动到A2.
现在我想"插入切割单元格",可能是插入空白单元格并将虚线范围移动到A2.
截图

有没有办法在自己的菜单上使用JavaScript ?

例如.

function insertCutOrCopiedCells(){
  var SS = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = SS.getActiveSheet();
  var cell = sheet.getActiveCell();

  // How do you get the cells being cut/copied? (ie. A4 to B5)

  // We can then insert empty cells (2 cols 2 rows) at the selection (A2)
  // and move the cut cells (A4 to B5) there
}
Run Code Online (Sandbox Code Playgroud)

google-apps-script google-spreadsheet-api

13
推荐指数
2
解决办法
4万
查看次数

Google Docs Spreadsheet to JSON

我已经看过很多关于此的文章,但它们似乎已经过时了,例如Google Docs电子表格网址都没有关键参数.我也读过这篇文章: 来自谷歌电子表格的JSON数据

然后我阅读此内容以访问数据 https://developers.google.com/gdata/samples/spreadsheet_sample

我的电子表格位于:https: //docs.google.com/spreadsheets/d/1SKI5773_68HiSve1fsz7fr4gotjFWHB7KBuVsOlLz6I/edit#gid=0

我试过使用这段代码,我觉得我的密钥或语法有问题,请指导修复.

<script src="http://spreadsheets.google.com/feeds/feed/1SKI5773_68HiSve1fsz7fr4gotjFWHB7KBuVsOlLz6I/worksheet/public/basic?alt=json-in-script&callback=importGSS"></script>

<script type="text/javascript">

    function importGSS(json) {
        console.log('finished');
    }
</script>
Run Code Online (Sandbox Code Playgroud)

javascript json google-sheets google-spreadsheet-api

12
推荐指数
1
解决办法
2万
查看次数