PHP CRUD Google Trang tính

Đó là tạo/đọc/cập nhật/xóa đối với người không quen biết và là yêu cầu cơ bản để quản lý dữ liệu trong cơ sở dữ liệu. Hiện đã có nhiều giải pháp trên AI2 giúp truy cập dữ liệu từ xa và hệ thống cơ sở dữ liệu và tôi đã khám phá một số khả năng kết nối với Google Trang tính, nhưng chưa bao giờ thực sự kết hợp tất cả lại với nhau. Nỗ lực này nhằm giải quyết vấn đề đó và cung cấp một ứng dụng web duy nhất, được tạo từ tập lệnh ứng dụng google dưới dạng giao diện giữa AI2 và Google Trang tính. Điều này có nghĩa là bạn có thể giữ trang tính google của mình ở chế độ riêng tư nhưng vẫn cung cấp quyền truy cập vào dữ liệu qua ứng dụng dành cho thiết bị di động

Làm việc này sẽ yêu cầu một số kiến ​​thức về google sheet, google apps script/javascript và xây dựng ứng dụng trong Appinventor 2

Tôi bị thúc đẩy một phần bởi việc thiếu các giải pháp lưu trữ dữ liệu trực tuyến có thể sử dụng/chức năng/(miễn phí) mà mọi người có thể dễ dàng sử dụng, sự sụp đổ sắp tới của các bảng hợp nhất và mất quyền truy cập firebase từ Ai2, và như đã nói ở trên, nhu cầu kéo

Chúng ta sẽ bắt đầu với google sheet, sau đó chuyển sang ứng dụng web và cuối cùng là ứng dụng AI2. Sẽ cần một số sự nghiêm ngặt để tất cả những điều này hoạt động, vì vậy tôi đã đặt ra một số yêu cầu và chỉ số trên đường đi

Bạn đã bao giờ cần lấy một số dữ liệu từ Bảng tính Google chưa?

Trong hướng dẫn này, chúng ta sẽ đọc, viết, cập nhật và xóa dữ liệu khỏi Bảng tính Google chỉ bằng một vài dòng PHP

Gần đây, tôi đã dành nhiều thời gian để làm việc với các nhóm hoạt động công nghệ và một phần dữ liệu mà mọi người thường muốn làm việc là thông tin liên hệ của các nhà lập pháp. Hãy lấy bảng tính này với thông tin liên hệ của tất cả các nhà lập pháp Hoa Kỳ. Tạo một bản sao của bảng tính này trong tài khoản của riêng bạn và chúng tôi đã sẵn sàng

PHP CRUD Google Trang tính

Chuẩn bị sẵn sàng cho bảng tính của bạn để truy cập theo chương trình

Theo mặc định, không thể truy cập bảng tính mới thông qua API của Google. Chúng tôi sẽ cần truy cập bảng điều khiển Google API của bạn và tạo một dự án mới và thiết lập dự án đó để hiển thị dữ liệu của Bảng tính của bạn

  1. Chuyển đến Bảng điều khiển API của Google
  2. Tạo một dự án mới
  3. Nhấp vào Bật API. Tìm kiếm và bật API Google Drive
  4. Tạo thông tin đăng nhập cho Máy chủ web để truy cập Dữ liệu ứng dụng
  5. Đặt tên cho tài khoản dịch vụ và cấp cho nó Vai trò Trình chỉnh sửa Dự án
  6. Tải xuống tệp JSON
  7. Sao chép tệp JSON vào thư mục ứng dụng của bạn và đổi tên thành client_secret. json

PHP CRUD Google Trang tính

Hiện tại, chúng tôi có một lượng lớn thông tin xác thực, bao gồm cả thông tin mà Google gọi là client_email , đại diện duy nhất cho tài khoản dịch vụ OAuth này. Lấy giá trị của client_email từ client_secret của bạn. json và quay lại bảng tính của bạn. Nhấp vào nút Chia sẻ ở trên cùng bên phải và dán giá trị client_email vào trường để cấp cho nó quyền chỉnh sửa. Nhấn gửi. Đó là nó

Đọc dữ liệu từ bảng tính với PHP

Hãy bắt đầu xây dựng

Chúng tôi sẽ không viết bất kỳ mã cụ thể nào cho khung ở đây;

Bạn muốn dùng thử tính năng này với vanilla PHP? .

require __DIR__ . '/vendor/autoload.php';

Bây giờ hãy tạo một tệp trong dự án của bạn có tên là nhà soạn nhạc. json và đặt một đối tượng JSON trống vào đó

{}

Khi bạn muốn kiểm tra mã của mình, chỉ cần chạy php yourfilename. php. Bạn đã sẵn sàng để bắt đầu viết mã

Bootstrapping Xác thực Google API

Đầu tiên, yêu cầu các gói của chúng tôi;

composer require google/apiclient:"^2.0"
composer require asimlqt/php-google-spreadsheet-client:"3.0.*"

Tiếp theo, ở đâu đó trong quá trình khởi động của bạn (trong một khung, tôi sẽ đặt nó trong tệp khởi động hoặc nhà cung cấp dịch vụ, nhưng hiện tại bạn chỉ có thể đặt nó ở đầu tệp), bạn sẽ muốn khởi tạo ứng dụng khách bằng một

putenv('GOOGLE_APPLICATION_CREDENTIALS=' . __DIR__ . '/client_secret.json');
$client = new Google_Client;
$client->useApplicationDefaultCredentials();

$client->setApplicationName("Something to do with my representatives");
$client->setScopes(['https://www.googleapis.com/auth/drive','https://spreadsheets.google.com/feeds']);

if ($client->isAccessTokenExpired()) {
    $client->refreshTokenWithAssertion();
}

$accessToken = $client->fetchAccessTokenWithAssertion()["access_token"];
ServiceRequestFactory::setInstance(
    new DefaultServiceRequest($accessToken)
);

Tôi biết điều này hơi rắc rối, nhưng bạn chỉ phải thực hiện một lần và sau đó tất cả các yêu cầu trong ứng dụng của bạn sẽ được xác thực chính xác. Bạn sẽ biết ứng dụng đang kết nối đúng cách nếu các bước trong phần tiếp theo hoạt động mà không có lỗi

Lấy dữ liệu thực

Tiếp theo, hãy tạo một tuyến đường mà bạn có thể truy cập trong trình duyệt của mình và bắt đầu lấy dữ liệu thực. Nếu bạn đang thử nghiệm điều này bằng vanilla PHP, chỉ cần thêm phần này vào cuối tệp bạn đang làm việc

Tất cả các cuộc gọi của chúng tôi sẽ bắt đầu bằng cách lấy bảng tính và từ đó, trang tính chứa dữ liệu của chúng tôi

// Get our spreadsheet
$spreadsheet = (new Google\Spreadsheet\SpreadsheetService)
   ->getSpreadsheetFeed()
   ->getByTitle('Copy of Legislators 2017');

// Get the first worksheet (tab)
$worksheets = $spreadsheet->getWorksheetFeed()->getEntries();
$worksheet = $worksheets[0];

Để cho thấy rằng bảng tính này hoạt động, hãy lặp lại mọi mục nhập và lặp lại nó

$listFeed = $worksheet->getListFeed();

/** @var ListEntry */
foreach ($listFeed->getEntries() as $entry) {
   $representative = $entry->getValues();
}

Chúng tôi đang làm việc với một đối tượng ListFeed ở đây, đại diện cho một "danh sách" các hàng và mỗi hàng bên trong danh sách đó được trả về dưới dạng một đối tượng ListEntry

Khi chúng tôi in chúng ra, chúng tôi sẽ thấy đầu ra của chúng tôi với giá trị của từng ô được đính kèm với hàng tiêu đề cho mỗi cột. Mảng sẽ được định hình một chút như thế này

{
   'lastname': "Brown",
   'firstname': "Sherrod",
   'birthday': "11/9/1952",
   'gender': "M",
   ...
}

Lưu ý rằng SDK này đang sử dụng Google Spreadsheet API v3, dựa trên XML; . Nếu bạn muốn giải quyết vấn đề này, bạn có thể xử lý nó như hiện tại, sử dụng một trong số ít thư viện Google Spreadsheets v4 tương đối chưa được kiểm tra hoặc ánh xạ bản ghi của bạn theo cách thủ công bằng cách sử dụng đối tượng CellFeed như được định nghĩa bên dưới

Thay vào đó, chúng ta có thể lấy một đối tượng CellFeed, cho phép chúng ta lấy từng hàng dưới dạng các mục thô của nó mà không cần ánh xạ tới tiêu đề

$cellFeed = $worksheet->getCellFeed();

$rows = $cellFeed->toArray());

trả về

________số 8

Chúng ta cũng có thể sử dụng đối tượng CellFeed để lấy một ô duy nhất theo chỉ mục cột/hàng

$cellFeed = $worksheet->getCellFeed();

{}
0

Cuối cùng, chúng ta cũng có thể xuất toàn bộ trang tính dưới dạng CSV

{}
1

Chèn, cập nhật và xóa khỏi bảng tính với PHP

Cho đến nay chúng tôi chỉ đọc từ bảng tính. Nhưng chúng tôi cũng có thể cập nhật và xóa các hàng hoặc ô mà chúng tôi truy xuất hoặc thậm chí chèn các ô hoặc trang tính của riêng mình

Cập nhật ô

Trước tiên, hãy lấy một trong những ô mà chúng tôi đã truy xuất và cập nhật nó

{}
2

Cập nhật hàng

Chúng tôi cũng có thể cập nhật toàn bộ hàng, được khóa bởi tên cột

{}
3

Xóa hàng

Hãy xóa một hàng đầy đủ

{}
4

Gói Bảng tính mà chúng tôi đang sử dụng tập trung vào việc cung cấp cho chúng tôi danh sách đầy đủ, không kéo các mục riêng lẻ ra khỏi danh sách, vì vậy chúng tôi sẽ cần sử dụng và phá vỡ một foreach. Nếu chúng ta đang sử dụng một đường dẫn bộ sưu tập như bộ sưu tập của Laravel, điều này sẽ sạch hơn một chút

{}
5

Chèn hàng

Chúng tôi cũng có thể thêm các hàng của riêng mình vào một trang tính. Chúng ta cần lấy một đối tượng ListFeed và chạy lệnh chèn trên đó

{}
6

Xử lý sự cố

Nếu bạn thấy lỗi này trong khi chèn hoặc cập nhật

{}
7

Có khả năng là do bạn không xác định một trong các cột. Ngay cả khi bạn đang đặt nó thành một giá trị trống, bạn vẫn cần cung cấp nó

Bây giờ bạn đã biết cách đọc, chèn, cập nhật và xóa các bản ghi khỏi Bảng tính Google của mình, bạn có một lớp cơ sở dữ liệu đầy đủ chức năng, dễ dàng tạo và có một lớp giao diện người dùng tích hợp để những người không chuyên về công nghệ có thể xem và quản lý dữ liệu của bạn.

Cảm ơn Greg Baugues về ý tưởng và bài đăng gốc về cách sử dụng Bảng tính Google và Python

—————

Matt Stauffer là tác giả của O'Reilly's Laravel. Up and Running và Đối tác & Giám đốc kỹ thuật tại Tighten Co. Bạn có thể tìm thấy anh ấy trên Twitter tại @stauffermatt

Làm cách nào để kết nối PHP với Google Trang tính?

Tải xuống mã và ví dụ .
Tạo Dự án Google và Định cấu hình API Trang tính
Tạo và chia sẻ Google Trang tính
Cài đặt và cấu hình máy khách PHP
Nhận bảng tính
Tìm nạp tất cả các hàng của một trang tính
Tìm nạp một vài hàng bằng cách sử dụng một phạm vi
Chỉ tìm nạp các ô của một cột đã cho
Chuyển đổi hàng thành đối tượng JSON

Bạn có thể gọi API REST từ Google Trang tính không?

Gọi API REST trong Google Trang tính dễ dàng như cài đặt ứng dụng Apipheny, sau đó mở ứng dụng trong Google Trang tính của bạn, nhập yêu cầu API của bạn và nhấp vào “Chạy” . Tiếp tục đọc hướng dẫn về cách nhập dữ liệu API REST vào Google Trang tính.

Tôi có thể sử dụng Google Trang tính làm API không?

API Google Trang tính là giao diện RESTful cho phép bạn đọc và sửa đổi dữ liệu của bảng tính . Các ứng dụng phổ biến nhất của API này bao gồm các tác vụ sau. Tạo bảng tính. Đọc và viết các giá trị ô bảng tính.

Tôi có thể sử dụng Google Trang tính làm cơ sở dữ liệu không?

Bạn có biết Google Trang tính có thể được sử dụng làm cơ sở dữ liệu nhẹ không? . Bạn cũng có thể chỉnh sửa và xóa dữ liệu bằng một vài cú nhấp chuột và trên hết, truy cập dữ liệu của bạn trực tuyến.