REST cho Người bán hàng du lịch: Sử dụng dữ liệu của Google trên Salesforce.com

Lane LiaBraaten, Chương trình dành cho nhà phát triển của Google
Tháng 11 năm 2007

Giới thiệu

Salesforce.com và Google lưu trữ các ứng dụng "Phần mềm dưới dạng dịch vụ" phổ biến, và cả hai tổ chức đều cung cấp các API cho phép nhà phát triển truy cập vào kho dữ liệu lớn hỗ trợ các ứng dụng này và mọi thứ bắt đầu trở nên thú vị khi chúng tôi kết hợp cả hai bộ API. G Suite ngày càng được sử dụng nhiều hơn trong môi trường doanh nghiệp và Salesforce.com đã xây dựng một nền tảng rộng lớn để xây dựng các ứng dụng tùy chỉnh dành cho doanh nghiệp, do đó, có nhiều cơ hội để các nhà phát triển (chính là bạn!) kết hợp sức mạnh của Google và Salesforce.com.

Bài viết này sẽ hướng dẫn bạn cách sử dụng API DataData của Google để bắt đầu tạo bản kết hợp dành cho doanh nghiệp, ngay cả khi bạn chỉ mới bắt đầu sử dụng nền tảng Salesforce.com hoặc giao thức Dữ liệu trên Google. Tôi sẽ giúp bạn thiết lập môi trường phát triển, cài đặt Salesforce.com và ứng dụng kết hợp dữ liệu của Google hiện có, sau đó tự viết.

Xin chào Salesforce.com!

Nếu là người mới sử dụng Salesforce.com như tôi, bạn cần bắt đầu bằng cách đăng ký tài khoản nhà phát triển trên ADN, Apex Developer Network. Tài khoản nhà phát triển cung cấp cho bạn một tài khoản Salesforce.com đầy đủ tính năng, cùng với quyền truy cập vào Apex wikicác bảng thảo luận.

Tiếp theo, bạn sẽ muốn tải Apex Toolkit cho Eclipse. Bộ công cụ này yêu cầu Java 1.5Eclipse 3.2.2 trở lên. Nếu bạn biết cách sử dụng Eclipse, trang web cập nhật phần mềm cho bộ công cụ này là http://www.adnsandbox.com/eclipsetoolkit/10.0/. Nếu bạn không quen với trình bổ trợ Eclipse hoặc đã xảy ra sự cố trong quá trình cài đặt, Apex wiki bao gồm hướng dẫn cài đặt chi tiết.

Sau khi cài đặt bộ công cụ này, bạn có thể truy cập vào nội dung trợ giúp của Apex được tích hợp vào hệ thống Trợ giúp của Eclipse. Trong Eclipse, hãy chuyển đến phần Trợ giúp | Nội dung trợ giúp | Bộ công cụ Apex cho Eclipse để xem nội dung này. Một trong những tài nguyên trợ giúp là hướng dẫn bắt đầu nhanh sẽ chỉ cho bạn cách tạo dự án mới và thêm S-Control, lớp và trình kích hoạt. Nếu trước đây chưa từng làm việc với mã Apex, bạn nên xem qua hướng dẫn này và tạo một dự án Apex trước khi tiếp tục.

Xuất sự kiện sang Lịch Google

Ron Hess đã viết một ứng dụng Hỗ trợ kết hợp Lịch Google cho phép bạn xuất các sự kiện từ Salesforce.com sang Lịch Google. Ron cũng viết một bài viết giải thích cách thức hoạt động của công cụ kết hợp này. Ứng dụng Bảng tính Google mà tôi sẽ hướng dẫn bạn cách xây dựng sau này được mô hình hoá sau khi kết hợp Lịch Google của Ron. Cảm ơn Ron!

Nếu là người dùng thành thạo Salesforce.com, bạn có thể tích hợp và sử dụng ứng dụng Lịch Google của Ron mà không cần hướng dẫn gì. Ban đầu, tôi cần một chút trợ giúp, vì vậy đây là những gì tôi đã làm để thấy ứng dụng của Ron hoạt động.

  1. Cài đặt ứng dụng:
    • Truy cập trang Hỗ trợ kết hợp Lịch Google và nhấp vào Tải xuống ngay.
    • Nhập thông tin xác thực ADN của bạn rồi nhấp vào Tiếp tục.
    • Đọc Điều khoản và điều kiện rồi nhấp vào Tiếp tục.
    • Nhấp vào Tiếp theo thông qua trang "Kiểm tra nội dung gói".
    • Chọn một mức bảo mật rồi nhấp vào Tiếp theo.
    • Nhấp vào Install (Cài đặt).
  2. Định cấu hình proxy AJAX.com AJAX
    • Trong trình đơn "Thiết lập quản trị", hãy nhấp vào Kiểm soát bảo mật | Cài đặt trang web từ xa.
    • Nhấp vào New Remote Site (Trang web từ xa mới).
    • Nhập Google làm "Tên trang web từ xa" và đối với "URL trang web từ xa", hãy sử dụng https://www.google.com.
    • Nhấp vào Lưu.
  3. Thêm nút "Thêm vào Google" vào trang Chi tiết sự kiện:
    • Trong trình đơn "Thiết lập ứng dụng", hãy nhấp vào Tuỳ chỉnh | Hoạt động | Bố cục trang sự kiện.
    • Nhấp vào Chỉnh sửa trong hàng "Bố cục sự kiện".
    • Nhấp đúp vào khu vực "Nút trang chi tiết".
    • Đánh dấu "Thêm vào Google" và nhấp vào mũi tên phải (>) để thêm nút này.
    • Nhấp vào OK.
    • Nhấp vào Lưu trên trang "Thuộc tính bố cục trang".
  4. Xuất sự kiện
    • Nhấp vào Trang chủ ở phía trên bên trái để xem lịch của bạn.
    • Nếu bạn chưa có sự kiện nào, hãy nhấp vào Sự kiện mới để tạo sự kiện.
    • Nhấp vào một sự kiện để xem trang Chi tiết sự kiện.
    • Nhấp vào nút Thêm vào Google.
    • Nhấp vào OK thông qua cảnh báo JavaScript
    • Đăng nhập bằng tên người dùng và mật khẩu Google của bạn.
    • Nhấp vào Cấp quyền truy cập để cấp cho ứng dụng SalesForce quyền ghi vào Lịch Google của bạn.
    • Xem sự kiện trong Lịch Google của bạn

Xây dựng ứng dụng Bảng tính Google

OK, bạn có thể đã chán với việc nhấp qua các trang Salesforce.com và sẵn sàng viết một vài mã. Kích hoạt lại Eclipse và bạn sẽ thấy dự án Apex mà bạn đã tạo hiện chứa ứng dụng S-Controls cho Lịch Google của Ron. Điều này là do Bộ công cụ Apex cho Eclipse liên tục đồng bộ hóa với Salesforce.com-pretty thú vị phải không?

Bạn có thể tạo ứng dụng Dữ liệu Google của riêng mình bằng cách sử dụng lại một số chức năng của Ứng dụng kết hợp Lịch Google, chẳng hạn như các điều khiển xác thực. Trong phần còn lại của phần này, tôi sẽ chỉ cho bạn cách tạo một ứng dụng xuất danh bạ Salesforce.com sang Bảng tính Google.

Phát hành một chế độ điều khiển đơn giản

S-Control là một tệp được Salesforce.com lưu trữ và được thực thi trong trình duyệt web khi người dùng truy cập vào ứng dụng của bạn. S-Control có thể chứa những loại nội dung mà bạn có thể hiển thị hoặc chạy trong một trình duyệt web, chẳng hạn như HTML, CSS hoặc JavaScript.

Có khá nhiều phần chuyển trong Salesforce.com và ứng dụng Google kết hợp. Vì vậy, điều đầu tiên tôi làm là thêm nút "Export to Google" (Xuất sang Google) vào trang danh bạ để gọi S-Control đơn giản, để đảm bảo tất cả các hệ thống ống nước đều chính xác trước khi bắt đầu JavaScript.

Trong dự án Apex, hãy nhấp chuột phải vào thư mục "S-Controls" rồi chọn Apex | New S-Control. Đặt nhãn và tên của export_contacts cho thành phần S-Control mới, để nguyên loại này là HTML tuỳ chỉnh rồi nhấp vào Finish (Hoàn tất).

S-Control mới sẽ chứa một tệp HTML skeleton. Bạn sẽ thêm một loạt JavaScript vào <head>, nhưng trước tiên, bạn có thể điền vào <body>, chỉ để nội dung nào đó hiển thị cho người dùng khi xuất danh bạ. Sao chép HTML này vào phần nội dung của bảng điều khiển S để hiển thị "dấu chấm chờ" và biểu trưng Bảng tính Google:

<div id="waiting" align="center" />
  <img src="/img/icon/home32.png" height="64" width="64" />
  <img src="/img/waiting_dots.gif" alt="Please wait..." title="Please wait..." height="25" width="196" />
  <img src="http://docs.google.com/images/doclist/logo_docs.gif" />
  <p><h3>Exporting contacts to Google Spreadsheets, please wait...</h3></p>

</div>

Bây giờ, bạn có thể phát hành S-Control và thiết lập một nút gọi.

  1. Sử dụng Eclipse để phát hành tệp S-Control:
    • Nhấp chuột phải vào dự án Apex của bạn và chọn Apex | Sync with Salesforce (Apex | Đồng bộ hóa với Salesforce).
    • Tìm S-Control mới trong cây thư mục, nhấp chuột phải vào thư mục đó rồi chọn Ghi đè điều khiển từ xa và xuất bản lên máy chủ.
    • Nếu bạn không tìm thấy S-Control thì có thể Bộ công cụ Apex đã tải lên cho bạn, nhưng bạn nên sử dụng góc nhìn đồng bộ hóa để đảm bảo mã mới nhất đang chạy trên máy chủ.
  2. Sử dụng giao diện người dùng Salesforce.com để xác định nút gọi S-Control này:
    • Trong trình đơn "Thiết lập ứng dụng", hãy nhấp vào Tuỳ chỉnh | Danh bạ | Các nút và đường liên kết.
    • Trong phần "Các nút và đường liên kết tuỳ chỉnh", hãy nhấp vào Mới.
    • Nhập Export to Google (Xuất sang Google) cho nhãn này và giữ tên Export_to_Google.
    • Chọn "List List" (Nút danh sách) làm Loại hiển thị.
    • Chọn "Custom S-Control" làm Nguồn nội dung.
    • Chọn "Hiển thị trong cửa sổ hiện có với thanh bên" làm Hành vi.
    • Chọn "export_contacts" trong trình đơn Điều khiển S tuỳ chỉnh.
  3. Thêm nút vào danh sách người liên hệ:
    • Trong trình đơn "Thiết lập ứng dụng", hãy nhấp vào Tuỳ chỉnh | Danh bạ | Bố cục tìm kiếm.
    • Nhấp vào Chỉnh sửa trong hàng "Chế độ xem danh sách liên hệ".
    • Đánh dấu "Xuất sang Google" và nhấp vào mũi tên phải (>) để thêm nút.
    • Nhấp vào Lưu.
  4. Hãy lái thử:
    • Nhấp vào thẻ Contacts (Danh bạ).
    • Chọn "Tất cả người liên hệ" làm Chế độ xem và nhấp vào Tiếp tục!.
    • Nhấp vào nút mới Xuất sang Google sáng bóng.
    • Xem "wait_dots" nhưng đừng mong đợi điều gì khác sẽ xảy ra.

Tương tác với Bảng tính Google

Nếu xem nguồn của Mash-up Lịch Google, bạn sẽ thấy tệp gcal_snippet.scf chứa bản tóm tắt của máy chủ Lịch Google. Để tương tác với Bảng tính Google, bạn cần tạo một tệp tương tự cho máy chủ Bảng tính Google. Tôi đã sử dụng lại mã của Ron Hess để sử dụng proxy AJAX.com AJAX và xác thực với Google AuthSub và thay thế hàm ghi sự kiện vào Lịch Google bằng chức năng ghi thông tin vào Bảng tính Google. Bạn có thể tìm thấy nguồn đầy đủ cho tệp này trong gworkbook_snippet.scf.

Tiếp theo, tôi thêm JavaScript vào S-Control của export_contacts.scf để truy vấn Salesforce.com để lấy thông tin liên hệ và ghi vào Bảng tính Google. Dễ dàng lấy dữ liệu từ Salesforce.com. Bạn chỉ cần tạo truy vấn và cung cấp hàm callback để thực thi khi dữ liệu được trả về. Ví dụ:

  var query = 'Select FirstName, LastName, Phone From Contact';
  var queryResult = sforce.connection.query(query, queryCallback);

Sau khi có thông tin liên hệ từ Salesforce.com, bạn phải tìm ra vị trí xuất thông tin. Trong giao thức Dữ liệu Google RESTful, mỗi bảng tính có thể được xác định bằng một URL riêng biệt. Bạn có thể lấy danh sách bảng tính của người dùng (và các URL liên quan) bằng cách truy vấn URL metafeed: http://spreadsheets.google.com/feeds/spreadsheets/private/full. Phương thức sau lặp lại qua các bảng tính này, tìm một bảng tính có tiêu đề cụ thể. Khi tìm thấy bảng tính chính xác, trước tiên, bảng tính sẽ nhận danh sách các trang tính, sau đó trả về URL nguồn cấp dữ liệu ô cho trang tính đầu tiên.

function getCellFeedUrl() {
  var SPREADSHEET_TITLE = 'Salesforce.com Contacts';
  var WORKSHEET_REL = 'http://schemas.google.com/spreadsheets/2006#worksheetsfeed';
  var CELLSFEED_REL = 'http://schemas.google.com/spreadsheets/2006#cellsfeed';

  // Query to find the spreadheet called "Salesforce.com Contacts"
  var spreadsheets = g.getFeed('http://spreadsheets.google.com/feeds/spreadsheets/private/full');
  var entries = g.getEntryList(spreadsheets);
  for (var e in entries) {
    if (g.getTitle(entries[e]) == SPREADSHEET_TITLE) {
      var worksheetsFeedUrl = g.link(entries[e],WORKSHEET_REL);
      var worksheets = g.getFeed(worksheetsFeedUrl);
      var worksheetEntries = g.getEntryList(worksheets);
      return g.link(worksheetEntries[0], CELLSFEED_REL);
    }
  }
}

Bạn có thể xem thêm thông tin về các nguồn cấp dữ liệu trong API dữ liệu của Bảng tính Google trong Hướng dẫn tham khảo.

Hàm queryCallback dùng phương thức getCellFeedUrl để tìm URL của nguồn cấp dữ liệu ô cần thiết để gửi yêu cầu cập nhật ô, sau đó ghi thông tin liên hệ vào một ô mỗi lần.

function queryCallback(queryResult) {
  var cellFeedUrl = getCellFeedUrl();
  var contacts = queryResult.getArray('records');
  for (var i=0; i<contacts.length; i++) {
    g.updateCell(cellFeedUrl, i+1, 1, contacts[i].LastName + ", " + contacts[i].FirstName);
    g.updateCell(cellFeedUrl, i+1, 2, contacts[i].Phone);
  }
  
  jumpback(); // Return to the contacts page when your done
}

Phương thức updateCell tồn tại trong bảng điều khiển S Control-snippet.scf. Phương thức này sẽ nhận URL chỉnh sửa của ô trong hàng và cột đã cho, sau đó gửi thông báo HTTP PUT chứa nội dung đại diện cho Dữ liệu trên Google của ô đã cập nhật:

GoogleSpreadsheet.prototype.updateCell = function(cellsFeedUrl, row, column, content ) {
  var cellEntry = this.getFeed(cellsFeedUrl+'/R'+row+'C'+column);
  var cellEditUrl = this.link(cellEntry,'edit');

  var newCellEntry = "<atom:entry xmlns:atom='http://www.w3.org/2005/Atom'>" +
      "<atom:category scheme='http://schemas.google.com/spreadsheets/2006' " +
      "term='http://schemas.google.com/spreadsheets/2006#cell' />" +
      "<gs:cell xmlns:gs='http://schemas.google.com/spreadsheets/2006' " +
      "row='" + row + "' col='" + column + "' inputValue='" + content + "' />" +
      "</atom:entry>";

  this.putEntry(cellEditUrl, newCellEntry);
} 

Bạn có thể xem thêm thông tin về cách cập nhật các ô bằng API dữ liệu Google Bảng tính trong Hướng dẫn dành cho nhà phát triển.

API dữ liệu của Bảng tính Google sử dụng miền con https://spreadsheets.google.com, do đó, trước khi mã ở trên hoạt động, bạn cần định cấu hình máy chủ proxy Salesforce.com AJAX và thêm https://spreadsheets.google.com.

Bạn cũng sẽ cần phải truy cập vào Google Tài liệu và tạo một bảng tính mới để lưu giữ dữ liệu. Hãy đảm bảo bạn lưu tệp này dưới dạng Người liên hệ Salesforce.com.

Sau khi tải các biện pháp kiểm soát S này lên, bạn sẽ có thể xuất thông tin liên hệ của mình sang một Bảng tính Google. Còn bạn thì sao? Với kiến thức mới về Salesforce.com và các API Dữ liệu của Google, bạn cũng có thể viết một số mã để nhập thông tin liên hệ từ Bảng tính Google vào Salesforce.com.

Kết luận

Bài viết này hầu như chưa đề cập đến khái niệm này, nhưng giờ đây bạn đã tăng tốc trên nền tảng Salesforce.com và Google Data API. Hãy nghĩ đến tất cả các ứng dụng mà bạn có thể viết để tận dụng các hệ thống mạnh mẽ này. Nhóm API Dữ liệu trên Google luôn phát triển, cung cấp thêm thông tin để bạn tận dụng trong các ứng dụng của mình. Nền tảng Salesforce.com cung cấp nhiều công cụ hữu ích không có trong bài viết này. Tôi sẽ tìm bản kết hợp doanh nghiệp tiếp theo của bạn trong The Exchange.

Chúc bạn lập trình vui vẻ!

Tài nguyên