如何在 PHP 中阅读 Google Drive 电子表格?

How do I read a Google Drive Spreadsheet in PHP?(如何在 PHP 中阅读 Google Drive 电子表格?)
本文介绍了如何在 PHP 中阅读 Google Drive 电子表格?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我要做的只是从网站上读取 Google 电子表格.我已经阅读并重新阅读了 Google Drive API 文档以及 Stack Overflow 上的所有 Google Drive PHP 内容,但我仍然无法到达终点.

All I'm trying to do is read a Google Spreadsheet from a web site. I've read and re-read the Google Drive API docs and everything Google Drive PHP on Stack Overflow and I still can't get to the end zone.

这是我所做的:

  1. 访问过 Google API 控制台并:
  1. Been to the Google APIs Console and :
  1. 在服务"下启用Drive API"和Drive SDK";
  2. 在API 访问"下创建了 OAuth 2.0 客户端 ID.在Web 应用程序的客户端 ID"下,控制台给了我客户端 ID"、电子邮件地址"、客户端密码"、重定向 URI"和JavaScript 来源";

  • 下载了Google API PHP 客户端库";
  • 打开 Google Drive 文档(电子表格)并点击共享"以获取文档的密钥";
  • 设置以下代码:
  • <?php 
    session_start(); 
    require_once 'lib/gapi/Google_Client.php'; 
    require_once 'lib/gapi/contrib/Google_DriveService.php'; 
    
    define( 'GDRIVE_CLIENT_ID', '<API Console - API Access - Client ID>' ); 
    define( 'GDRIVE_CLIENT_SECRET', '<API Console - API Access - Client secret>' ); 
    define( 'GDRIVE_REDIRECT_URIS', '<API Console - API Access - Redirect URIs>' ); 
    
    define( 'GDRIVE_SCOPE_01', 'h t t p s://www.googleapis.com/auth/drive' ); 
    define( 'GDRIVE_SCOPE_02', 'h t t p s://www.googleapis.com/auth/drive.apps.readonly' ); 
    define( 'GDRIVE_SCOPE_03', 'h t t p s://www.googleapis.com/auth/drive.file' ); 
    define( 'GDRIVE_SCOPE_04', 'h t t p s://www.googleapis.com/auth/drive.metadata.readonly' ); 
    define( 'GDRIVE_SCOPE_05', 'h t t p s://www.googleapis.com/auth/drive.readonly' ); 
    define( 'GDRIVE_FILE_KEY', '<'key' given from 'sharing' document>' ); 
    
    $client = new Google_Client(); 
    $client->setClientId( GDRIVE_CLIENT_ID ); 
    $client->setClientSecret( GDRIVE_CLIENT_SECRET ); 
    $client->setRedirectUri( GDRIVE_REDIRECT_URIS ); 
    $client->setScopes( array( GDRIVE_SCOPE_01, GDRIVE_SCOPE_02, GDRIVE_SCOPE_03, GDRIVE_SCOPE_04, GDRIVE_SCOPE_05 ) ); 
    
    try { 
      $file = $service->files->get( GDRIVE_FILE_KEY ); 
      echo "Title: ", $file->getTitle(); 
      echo "Description: ", $file->getDescription(); 
      echo "MIME type: ", $file->getMimeType(); 
    } catch (Exception $e) { 
      echo "An error occurred: ", $e->getMessage(); 
    } 
    ?> 
    

    在触发异常的 $service->files->get( GDRIVE_FILE_KEY ) 调用之前,一切都运行良好(无论如何都没有错误):

    All runs fine (no errors anyway) until the $service->files->get( GDRIVE_FILE_KEY ) call which triggers the exception:

    发生错误:调用 GET https://www.googleapis.com/drive/v2/files 时出错:(403) 已超出未经验证使用的每日限制.继续使用需要注册.

    An error occurred: Error calling GET https://www.googleapis.com/drive/v2/files: (403) Daily Limit for Unauthenticated Use Exceeded. Continued use requires signup.

    我做错了什么?我把头发拔掉了(嗯,剩下的).

    What am I doing wrong? I've pulled my hair out (well, what was left).

    推荐答案

    如果您不想打扰 API 或 Google 身份验证,还有一个更简单但不太干净的解决方案.

    There is also a much easier, but less clean solution, if you don't want to bother with the API or Google Authentication.

    1. 转到您在 Google 云端硬盘中的电子表格.
    2. 转到文件 ->发布到网络
    3. 发布到网络对话框中,您可以获得指向电子表格的 .csv 链接.
    1. Go to your Spreadsheet in Google Drive.
    2. Go to File -> Publish to the Web
    3. In the Publish to the web dialog you can get a .csv Link to your spreadsheet.

    您现在可以像访问网络上的任何其他 csv 文件一样访问内容.下面是一些示例代码:

    You can now access the contents like any other csv File on the Web. Here is some sample code:

    $spreadsheet_url="https://docs.google.com/spreadsheet/pub?key=<somecode>&single=true&gid=0&output=csv";
    
    if(!ini_set('default_socket_timeout', 15)) echo "<!-- unable to change socket timeout -->";
    
    if (($handle = fopen($spreadsheet_url, "r")) !== FALSE) {
        while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
            $spreadsheet_data[] = $data;
        }
        fclose($handle);
    }
    else
        die("Problem reading csv");
    

    这篇关于如何在 PHP 中阅读 Google Drive 电子表格?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

    本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

    相关文档推荐

    Convert JSON integers and floats to strings(将JSON整数和浮点数转换为字符串)
    in php how do I use preg replace to turn a url into a tinyurl(在php中,如何使用preg替换将URL转换为TinyURL)
    all day appointment for ics calendar file wont work(ICS日历文件的全天约会不起作用)
    trim function is giving unexpected values php(Trim函数提供了意外的值php)
    Basic PDO connection to MySQL(到MySQL的基本PDO连接)
    PHP number_format returns 1.00(Php number_Format返回1.00)