2015-02-13 18 views
12

Vì vậy, tài liệu here nói rất rõ ràng rằng việc gửi XML đến url nguồn cấp dữ liệu danh sách cho trang tính với tên trường theo định dạng của XML này sẽ chèn một hàng mới.Thêm hàng vào Bảng tính Google qua cURL - các trường bắt buộc lỗi

Xác thực đang hoạt động và tài khoản được ủy quyền có thể truy cập trang tính. Tất cả các lỗi đó đều được giải quyết.

Vì vậy, khi tôi gửi đến https://spreadsheets.google.com/feeds/list/key/mySheetIDHere/private/full mà không cần tôi nhận được

"Mục đăng đang thiếu một hoặc nhiều hơn các trường bắt buộc (s): Tiêu đề"

Vì vậy, tôi đã thêm <title></title> ngoài các tồn tại trước đó <gsx:Title></gsx:Title> và biến mất nhưng được thay thế bằng

"mục đăng đang thiếu một hoặc nhiều hơn các trường bắt buộc (s): rowCount"

Vì vậy, tôi đã cố gắng thêm một int đó là số hàng hiện tại nhưng lỗi đó vẫn tồn tại.

XML hiện tại là dưới

<entry xmlns="http://www.w3.org/2005/Atom" 
    xmlns:gsx="http://schemas.google.com/spreadsheets/2006/extended"> 
    <title>A Title</title> 
    <rowCount>3</rowCount> 
    <gsx:Title>A Title</gsx:Title> 
    <gsx:Name>A Name</gsx:Name> 
    <gsx:Email>An email</gsx:Email> 
    <gsx:Phone>A phone</gsx:Phone> 
</entry> 

Các tài liệu nói gì về trường bắt buộc hoặc số lượng hàng. Có ai biết tôi đang làm gì sai không?

+0

Tôi đang gặp phải các lỗi tương tự, bao giờ tìm ra điều này? –

Trả lời

5

Có hoạt động, đây là a Gist with all of my scripts. Từ URL của bạn, có vẻ như bạn có thể đang POST tới điểm cuối add a worksheet thay vì điểm cuối add a list row. Điểm cuối trang tính mong đợi titlerowCount như bạn đang thấy. Những gì bạn muốn là một URL mà trông giống như

https://spreadsheets.google.com/feeds/list/$spreadsheet_id/$worksheet_id/private/full 

tôi thiết lập a spreadsheet để thử nghiệm với ba cột:

  • Fruit
  • Màu
  • Kích

tôi hạt giống nó (hah!) với Apple, Red, Medium khi tôi kiểm tra auth và đọc, sau đó thêm Orange, Orange, Medium với điều này cUR L lệnh:

curl \ 
    --header "Authorization: GoogleLogin auth=$auth" \ 
    --header 'Content-Type: application/atom+xml' \ 
    -d @data.xml \ 
    -X POST \ 
    "https://spreadsheets.google.com/feeds/list/$spreadsheet_id/$worksheet_id/private/full" 

đâu:

  • $auth là Google của tôi auth dấu hiệu thu được từ https://www.google.com/accounts/ClientLogin
  • $spreadsheet_id là ID có thể nhìn thấy trong URL hoặc thu được từ https://spreadsheets.google.com/feeds/spreadsheets/private/full
  • $worksheet_id được bảng tính (một trang tính/tab bên trong toàn bộ tài liệu) thu được từ https://spreadsheets.google.com/feeds/worksheets/$spreadsheet_id/private/full. Tôi không thấy bất kỳ nơi nào hiển thị trong giao diện người dùng mà tôi có thể nhận được ID trang tính.

data.xml trông như thế này:

<entry xmlns="http://www.w3.org/2005/Atom" 
    xmlns:gsx="http://schemas.google.com/spreadsheets/2006/extended"> 
    <gsx:fruit>Orange</gsx:fruit> 
    <gsx:color>Orange</gsx:color> 
    <gsx:size>Medium</gsx:size> 
</entry> 

tôi nhận thấy rằng các cột đều được lowercased - Tôi không chắc chắn nếu có vấn đề.Tôi cũng nhận thấy có các thẻ titlecontent khi tôi tìm nạp các hàng, ngoài các phần tử có cấu trúc, nhưng title là một cá trích đỏ cho lỗi title mà bạn đang thấy.

<!-- GET https://spreadsheets.google.com/feeds/list/$spreadsheet_id/$worksheet_id/private/full --> 
<!-- snip --> 
    <title type="text">Apple</title> 
    <content type="text">color: Red, size: Medium</content> 
    <gsx:fruit>Apple</gsx:fruit> 
    <gsx:color>Red</gsx:color> 
    <gsx:size>Medium</gsx:size> 
<!-- snip --> 
+0

Giờ đây, Google không còn hỗ trợ ClientLogin nữa, làm cách nào bạn lấy Mã thông báo ủy quyền? –

+0

Có vẻ như chúng tôi phải chuyển sang [OAuth 2] (https://developers.google.com/google-apps/spreadsheets/authorize) –

2

tôi chỉ đơn giản bằng cách sử dụng sai URL - thay vì tham khảo các yếu tố liên kết Danh sách thức ăn chăn nuôi với rel = "http://schemas.google.com/g/2005#post", tôi đã tham khảo thức ăn chăn nuôi Worksheet , cũng có phần tử liên kết có cùng rel nhưng khác nhau href.

Từ những gì tôi thu thập, URL nguồn cấp dữ liệu danh sách và URL nguồn cấp dữ liệu danh sách giống nhau, đó là nơi sự nhầm lẫn bắt đầu với tôi.

+0

Nói chung trong các API giống như REST, bạn thấy các URL đó giống nhau. Sự khác biệt quan trọng là động từ, yêu cầu GET tài nguyên hoặc POST một tài nguyên mới. Có một bản tóm tắt đơn giản về hành vi RESTful trong [tài liệu định tuyến Rails] (http://guides.rubyonrails.org/routing.html#crud-verbs-and-actions). –

+0

Tôi biết cách REST như API hoạt động và thực ra tôi đang sử dụng lệnh POST. Như tôi đã nói, tôi đã tham khảo URL sai, không thực hiện GET. –

Các vấn đề liên quan