PHP對Google 試算表做CRUD

Google Sheets有API可以做查詢與編輯,近日架設了LINE BOT對話機器人,就利用了Google試算表來做簡單的資料庫,這裡記錄一下CRUD的練習程式碼。

那麼要準備什麼東西呢?
  1. 有Google帳號,建立一份Google試算表,並且開啟分享(取得試算表ID)
  2. 啟用Google Sheets API 並取得credentials.json檔案(本文就直接用API範例的Quickstart來修改,至於怎麼啟用API網路上有很多精美圖文教學可參考)
  3. PHP運作環境
  4. 準備好Google Client Library (如果你的環境沒有Composer,可以先在你的電腦安裝XAMPPComposer,取得Google Client Library後,做Quickstart範例看看,沒問題再一起上傳到你的空間)
快點開始吧!其實在Google Sheets API裡面的Quickstart範例已經有程式碼與步驟了,複製貼上,下個指令取得授權就可以玩。(vendor資料夾與credentials.json檔案的位置要留意一下)

但是!有個重點:這程式碼(如下圖紅框處),有一行程式會造成我們只能讀取而不能刪改資料,請把"_READONLY"刪除掉,我們才能做後續的新增、修改、刪除資料。

如果有把"_READONLY"這幾個字刪除,取得授權時,可以看到多了些讀取以外權限!

而授權後,在quickstart.php資料夾內會多了一個token.json檔案,請保留別刪除了噢!我們來建立一支PHP做個資料查詢試試吧!可以正常運作就準備把整個資料夾打包丟上你的Server囉!

先附上資料查詢的程式碼:
<?php
require __DIR__ . '/vendor/autoload.php';
$client = new Google_Client();
$client->setAuthConfig('credentials.json');
$client->setAccessType('offline');
$service = new Google_Service_Sheets($client);
$tokenPath = 'token.json';
if (file_exists($tokenPath)) {
    $accessToken = json_decode(file_get_contents($tokenPath), true);
    $client->setAccessToken($accessToken);
}

//這是DEMO用的試算表ID
$spreadsheetId = '1R8yd6608Mux8tYlX2tNqNmOiKtrsxJDKJaxlHWRYBHU';

$range = '工作表1';

$response = $service->spreadsheets_values->get($spreadsheetId, $range);
$values = $response->getValues();

if (empty($values)) {
    print "No data found.\n";
} else {
    //只顯示A、B兩欄的所有資料
    foreach ($values as $row) {
        echo $row[0]." - ".$row[1]."<br />";
    }
}

?>
含有新增、修改、刪除的DEMO的式碼放在GitHub囉,不過請注意一下!我這裡的Google APIs Client Library刪除了很多東西(不然免費空間塞不下),如果需要用到GoogleSheets以外的API,請用官方完整的版本唷!

留言

  1. 你好, 我跟你的做了一次, 但做不出來。

    1. 取得credentials.json前, 我應該選擇web server 吧? LINK的部份包括quickstart.php 嗎?
    2. 當我輸入你github上的quickstart.php code時, 他說Error 500, 是怎麼一會事?
    3. 當我php quickstart.php時, 他要我輸入Enter verification code:, 是怎麼一會事?
    謝謝

    回覆刪除
    回覆
    1. 這裡有你要的答案
      https://stackoverflow.com/questions/64030724/google-sheets-api-verification-flow-does-not-provide-a-verification-code

      刪除

張貼留言