标签: google-spreadsheet-api

使用 javascript 将谷歌电子表格导出为 xlsx

似乎使用新版本的谷歌电子表格不再可能使用 JS 下载整个谷歌电子表格。到目前为止,我一直在使用这种方法(对于之前创建的文件仍然可以正常工作):

 var xhr = new XMLHttpRequest();
 xhr.open('GET', 'https://docs.google.com/feeds/download/spreadsheets/Export?key=' + id + '&exportFormat=xlsx');

 xhr.responseType = 'arraybuffer';
 xhr.setRequestHeader('Authorization', 'Bearer ' + gapi.auth.getToken().access_token);

 xhr.onload = function() {
      ...
 };

 xhr.send();
Run Code Online (Sandbox Code Playgroud)

我找到了新的下载网址

https://docs.google.com/spreadsheets/d/_ID_/export?format=xlsx&id=_ID_
Run Code Online (Sandbox Code Playgroud)

但不幸的是,没有Access-Control-Allow-Origin标题,因此无法使用 JS 访问该链接。我还有其他可能下载文件吗?

Google Drive API 将导出 url 显示为:

https://docs.google.com/spreadsheets/export?id=_ID_&exportFormat=xlsx
Run Code Online (Sandbox Code Playgroud)

但也没有Access-Control-Allow-Origin标题。

是否有其他可能仅使用 JS 下载此文件?

javascript google-spreadsheet-api google-drive-api

5
推荐指数
1
解决办法
2557
查看次数

GAS:使用默认值提示用户输入

考虑以下 Google 应用脚本代码:

var ui = SpreadsheetApp.getUi();
var result = ui.prompt(
   'How many days in advance you want to receive the event notification?',
   '',
   ui.ButtonSet.OK_CANCEL);  
Run Code Online (Sandbox Code Playgroud)

我希望对话框在输入框中显示默认值。
其次,我们是否有输入/发送数据的键盘快捷键?以便用户可以点击Enter(或喜欢)接受默认值或value-Enter 发送他/她自己的值。

modal-dialog google-api google-docs-api google-apps-script google-spreadsheet-api

5
推荐指数
1
解决办法
4211
查看次数

使用 C# 访问私人 Google 电子表格

我有一个 AngularJS + C#.NET OnePage 应用程序网站。目标是从我使用 C#(而不是使用 AngularJS)拥有的私有 Google 电子表格中检索 JSON。我阅读了各种 Google Sheets 文档和 API、OAuth 2.0 等,并尝试了一些示例,但它们似乎都不适合我。我看到有不同的方法可以从 Google 电子表格访问和检索数据,但它们仍然不适用于我的情况。谁能帮我?谢谢你。

编辑:我设法通过在 Google Developers Console=>Credentials=>Create Client ID 下创建其他应用程序类型来获得令牌。这是 C# 控制台应用程序:

using System;
using Google.GData.Client;
using Google.GData.Spreadsheets;

namespace MySpreadsheetIntegration
{
  class Program
  {
    static void Main(string[] args)
    {
      ////////////////////////////////////////////////////////////////////////////
      // STEP 1: Configure how to perform OAuth 2.0
      ////////////////////////////////////////////////////////////////////////////

      // TODO: Update the following information with that obtained from
      // https://code.google.com/apis/console. After registering
      // your application, these will be provided for you.

      string …
Run Code Online (Sandbox Code Playgroud)

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

5
推荐指数
1
解决办法
3168
查看次数

Google Apps脚本/表格返回错误请求400

我在Google表格上运行了一个非常简单的脚本。

该脚本接受Webhook POST,并将Webhook的内容写为电子表格中的新行。

该脚本可以正常运行,并且在接收数据时会写一个新行。

但是,出于某些原因,我从中发送Webhook的应用程序收到“ Bad Request 400”错误消息。即使该脚本可以工作,并且可以完成应有的工作。

这是我正在使用的脚本的小提琴

如果我手动调用此方法,则会收到200响应:

var response = UrlFetchApp.fetch("https://script.google.com/macros/s/AKfycbx5ubu78yi5sj2D9z-2m3Wqog604wY1ENwP3pZstnB95Mc5_N3b/exec", options);
Run Code Online (Sandbox Code Playgroud)

这是一个带有表单的登录页面。提交表单时,表单数据通过Webhook推送到Google表格。(单击“单击我以测试此脚本”以查看该表单,如果提交该表单,则将看到实际的工作表。)

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

5
推荐指数
1
解决办法
1369
查看次数

如何从 API 访问私有电子表格?

您好,我需要从谷歌电子表格 API 访问电子表格。我启用了 Google Sheets API 并添加了 API 密钥,但这不起作用!!! https://sheets.googleapis.com/v4/spreadsheets/[my_spreadsheet_id]/values/A1?key=[my_api_key]

结果是:403 - 调用者没有权限

但是,如果我为此电子表格提供公共访问权限 ---> 它有效!!!

结果是:200 - [正确请求的数据......]

我的问题是:如何从 API 访问私有电子表格?

我需要使用 php 的函数(如 file_get_contents())从我的网站读取和写入订单数据

php google-spreadsheet-api

5
推荐指数
1
解决办法
3139
查看次数

在 Google Sheets API v4 中附加的并发行

我们正在使用Google Sheets API v4来获取和附加工作表中的行。当多个行追加请求同时发送时会出现问题,例如 4 个并发请求。有时,此类请求会发生交叉,并且某些附加的行会被其他请求覆盖。例如,如果每个请求只有 1 行用于追加,并且同时发送了 4 个此类请求,则只会创建 3 行。在顺序请求的情况下不会出现此问题。是已知问题吗?是否有任何解决方法如何实现行不被并发追加请求覆盖?

为了发送追加请求,我们使用批量更新请求端点:
POST https://sheets.googleapis.com/v4/spreadsheets/{spreadsheetId}:batchUpdate

批量更新请求的主体具有“appendCells”属性和适当的附加单元格请求数据:

  1. “sheetId”:适当的工作表 ID;
  2. “行”:只有一行;
  3. “字段”:“*”

google-sheets google-spreadsheet-api google-sheets-api

5
推荐指数
1
解决办法
3367
查看次数

Google Sheet API 附加到特定工作表

根据API,我似乎无法指定将数据附加到何处的工作表。它将所有内容附加到第一个工作表中。真的是这样吗?

因为我可以创建一个包含多张纸的文件,但是我不能在第二张纸上写字?

google-api google-spreadsheet-api

5
推荐指数
2
解决办法
4692
查看次数

使用 API 密钥 (C#) 将数据写入 Google 电子表格

我有一个应用程序允许我使用 API 密钥从 Google 电子表格中读取数据。我只是让 HTTP GET 到这个地址并得到一个带有数据的响应。

https://sheets.googleapis.com/v4/spreadsheets/18soCZy9H4ZGuu**********BeHlNY1lD8at-Pbjmf8c/values/Sheet1!A1?key=AIzaSyAYJ***********pB-4iKZjYf4y0vhXP8OM
Run Code Online (Sandbox Code Playgroud)

但是当我尝试使用 HTTP PUT 写数据来寻址时

https://sheets.googleapis.com/v4/spreadsheets/18soCZy9H4ZGuu**********BeHlNY1lD8at-Pbjmf8c/values/Sheet1!A4?valueInputOption=RAW?key=AIzaSyAYJ***********pB-4iKZjYf4y0vhXP8OM
Run Code Online (Sandbox Code Playgroud)

它给了我 401 错误。发出 PUT 请求的代码:

 using (WebClient wc = new WebClient())
 {
     byte[] res = wc.UploadData(link, "PUT", Encoding.ASCII.GetBytes(textBox1.Text));
     MessageBox.Show(Encoding.Default.GetString(res));
 }
Run Code Online (Sandbox Code Playgroud)

此外,电子表格是完全公开的,任何人都可以在未经授权的情况下读写。我的猜测是我不能使用 API Key 将数据写入电子表格,唯一的方法是使用 OAuth。

更新: 所以我刚刚尝试使用 Google.Apis.Sheets.v4 来写入值,现在我几乎 100% 确定 API 密钥不能用于将数据写入 Google 电子表格。好吧,那我就用 OAuth 2.0。

c# google-spreadsheet-api

5
推荐指数
1
解决办法
4766
查看次数

通过 API 向 Google 电子表格添加多行

我可以使用以下代码向 Google 电子表格添加新行:

$valueRange = new Google_Service_Sheets_ValueRange();
$valueRange->setValues(["values" => ['data1', 'data2']]);
$range = 'Sheet1!A1:A';
$conf = ["valueInputOption" => "USER_ENTERED"];
$service->spreadsheets_values->append($spreadsheetId, $range, $valueRange, $conf);
Run Code Online (Sandbox Code Playgroud)

我应该如何更改 setValues 参数以添加多行?

谢谢你。

更新

同时我使用这种方法:

$range_number = 1; // Keep spreadsheet header
$data = array();
for($i=0;$i<count($data);$i++){
    $range_number++;
    $range = 'Sheet1!A'.$range_number.':XX';
    $values = array( array($data1[$i], $data2[$i], $data3[$i]) );
    $data[] = new Google_Service_Sheets_ValueRange(
        array( 'range' => $range, 'values' => $values )
    );
}
$body = new Google_Service_Sheets_BatchUpdateValuesRequest(array(
  'valueInputOption' => "USER_ENTERED",
  'data' => $data
));
$result = $service->spreadsheets_values->batchUpdate($spreadsheetId, $body); …
Run Code Online (Sandbox Code Playgroud)

php google-spreadsheet-api

5
推荐指数
1
解决办法
4704
查看次数

使用 php 按列以编程方式填充 Google 电子表格

问好!正如您通过查看我的个人资料可能已经猜到的那样,我对这个社区很陌生,所以我会尽我所能,尽可能详细和清楚地解释。:)

PS:如果您看到我可以做些什么来改进我的代码,请随时提出建议!(我有点初学者)

P.S2.:请记住,英语是我的第二语言,所以我可能会犯拼写/语法错误。

好的,这里是:

$client = new Google_Client();
    $client->setAuthConfig(__DIR__ . '/client_secret.json');
    $client->addScope(Google_Service_Drive::DRIVE);
    $client->setIncludeGrantedScopes(true);
    $service = new Google_Service_Sheets($client);
Run Code Online (Sandbox Code Playgroud)

上面的代码是我的初始化

while(($row = $mssql->fetch()) != false){
    $nbRows++;
    $data['MatchType'][] = $row['MatchType'];
    $data['AccountNo'][] = $row['AccountNo'];
    $data['AccountName'][] = $row['AccountName']; 
}
Run Code Online (Sandbox Code Playgroud)

所以基本上上面的代码块所做的是填充一个以列标题命名的数组,其中包含来自数据库一列的所有值。它将对数据库的所有列执行此操作。所以你最终会得到类似的东西:

data (
    MatchType (
        [0] => Success
        [1] => Failed
        [2] => Pending
        ...
    )
    AccountNo (
        [0] => 12345
        [1] => 23456
        [2] => 34567
        ...
    )
    AccountName (
        [0] => Family Dental
        [1] => Chez Germain et ses amis!
        [2] => 123 travellers's …
Run Code Online (Sandbox Code Playgroud)

php google-spreadsheet-api

5
推荐指数
0
解决办法
1061
查看次数