Seyahat Eden Satıcı için REST: Salesforce.com'da Google Verilerini Kullanma

Lane LiaBraaten, Google Geliştirici Programları
Kasım 2007

Giriş

Salesforce.com ve Google, popüler "Hizmet Olarak Yazılım" uygulamalarını barındırır ve her iki kuruluş da geliştiricilerin bu uygulamaları destekleyen büyük veri depolarına erişmesine olanak tanıyan API'ler sağlar. Her iki API kümesi birleştirildiğinde işler daha da ilginç hale gelir. G Suite, kurumsal ortamda giderek daha fazla kullanılmaya devam etmektedir ve Salesforce.com, özel iş uygulamaları oluşturmak için kapsamlı bir platform oluşturmuştur. Dolayısıyla, geliştiricilerin (yani siz) Google ile Salesforce.com'un gücünü birleştirmesi için birçok fırsat vardır.

Bu makalede, Salesforce.com platformunu veya Google Veri protokolünü kullanıyor olsanız bile kurumsal mashup'lar oluşturmaya başlamak için RESTful Google Data API'lerini nasıl kullanacağınız gösterilmektedir. Geliştirme ortamınızı kurmanıza, mevcut bir Salesforce.com ve Google melez platformunu yüklemenize, ayrıca kendi listenizi yazmanıza yardımcı olacağım.

Merhaba Salesforce.com!

Benim gibi bir Salesforce.com yeniyseniz Apex Geliştirici Ağı olan ADN'de bir geliştirici hesabına kaydolarak başlamanız gerekir. Geliştirici hesabı, eksiksiz özellikler sunan Salesforce.com hesabının yanı sıra Apex wiki ve tartışma panolarına erişim olanağı sağlar.

Ardından Eclipse için Apex Araç Seti'ni edinmeniz gerekir. Araç seti, Java 1.5 ve Eclipse 3.2.2 veya daha yeni bir sürümü gerektirir. Eclipse'i nasıl kullanacağınızı biliyorsanız araç setinin yazılım güncelleme sitesi http://www.adnsandbox.com/eclipsetoolkit/10.0/. Eclipse eklentilerine aşina değilseniz veya yükleme sırasında bir hata oluştuysa Apex vik, ayrıntılı yükleme talimatlarını içerir.

Araç seti yüklendikten sonra Eclipse'in Yardım sistemine entegre edilen Apex yardım içeriğine erişebilirsiniz. Eclipse'te bu içeriği görmek için Yardım | Yardım İçerikleri | Eclipse için Apex Araç Seti'ne gidin. Yardım kaynaklarından biri, yeni bir proje oluşturmayı ve S-Control'lerini, sınıfları ve tetikleyicileri eklemeyi gösteren bir hızlı başlangıç eğitimidir. Daha önce Apex koduyla çalışmadıysanız bu eğiticiye devam etmeniz ve devam etmeden önce bir Apex projesi oluşturmanız gerekir.

Etkinlikleri Google Takvim'e aktarma

Ron Hess, etkinlikleri Salesforce.com'dan Google Takvim'e aktarmanıza olanak tanıyan bir Google Calendar Mash-up uygulaması yazdı. Ron ayrıca, mashup'ın işleyiş şeklini açıklayan bir makale yazdı. Daha sonra nasıl geliştireceğinizi göstereceğim Google E-Tablolar uygulaması Ron'un Google Takvim karışımından sonra modellenecek. Teşekkürler Ron!

Salesforce.com'u deneyimli bir kullanıcı olarak kullanıyorsanız, muhtemelen hiçbir talimat olmadan Ron'un Google Takvim uygulamasını entegre edip kullanabilirsiniz. İlk olarak biraz yardıma ihtiyacım var, Ron'un uygulamasını çalışırken görmek için yaptıklarımı burada bulabilirsin.

  1. Uygulamayı yükleyin:
    • Google Calendar Mash-up (Google Mash-up) sayfasına gidin ve Get Now Now'ı (Şimdi İndir) tıklayın.
    • ADN kimlik bilgilerinizi girin ve Devam'ı tıklayın.
    • Hükümler ve Koşullar'ı okuyup Devam'ı tıklayın.
    • "Paket içeriğini inceleme" sayfasında İleri'yi tıklayın.
    • Bir güvenlik düzeyi seçin ve İleri'yi tıklayın.
    • Yükle'yi tıklayın.
  2. Salesforce.com AJAX proxy'sini yapılandırma
    • "Yönetim Kurulumu" menüsünde Güvenlik Denetimleri | Uzak Site Ayarları'nı tıklayın.
    • Yeni Uzak Site'yi tıklayın.
    • "Uzak Site Adı" olarak Google değerini girin ve "Uzak Site URL'si" için https://www.google.com değerini kullanın.
    • Kaydet'i tıklayın.
  3. Etkinlik Ayrıntıları sayfasına "Google'a ekle" düğmesini ekleyin:
    • "Uygulama Kurulumu" menüsünde Özelleştir | Etkinlikler | Etkinlik Sayfası Düzenleri'ni tıklayın.
    • "Etkinlik Düzeni" satırındaki Düzenle seçeneğini tıklayın.
    • "Ayrıntı Sayfası Düğmeleri" alanını çift tıklayın.
    • "Google'a Ekle"yi vurgulayın ve sağ (>) oku tıklayarak düğmeyi ekleyin.
    • OK (Tamam) seçeneğini tıklayın.
    • "Sayfa Düzeni Özellikleri" sayfasında Kaydet'i tıklayın.
  4. Bir etkinliği dışa aktarma
    • Takviminizi görüntülemek için sol üstteki Ana Sayfa'yı tıklayın.
    • Herhangi bir etkinliğiniz yoksa etkinlik oluşturmak için Yeni Etkinlik'i tıklayın.
    • Etkinlik Ayrıntıları sayfasını görüntülemek için bir etkinliği tıklayın.
    • Google'a ekle düğmesini tıklayın.
    • JavaScript uyarısından Tamam'ı tıklayın.
    • Google kullanıcı adınız ve şifrenizle oturum açın.
    • SalesForce uygulamasına Google Takvim'inize yazma erişimi vermek için Erişim izni ver'i tıklayın.
    • Etkinliği Google Takviminizde görüntüleme

Google E-Tablolar uygulaması oluşturma

Tamam, Salesforce.com sayfalarını tıklamaktan ve kod yazmaya hazır olmaktan sıkıldınız. Eclipse'i tekrar başlatın. Oluşturduğunuz Apex projesinin artık Ron'un Google Takvim uygulamasının S-Controllerini içerdiğini görüyorsunuz. Bunun nedeni, Apex Araç Seti'nin Salesforce.com-pretty havalı ile sürekli olarak senkronize edilmesidir.

Google Takvim Mashup'ın, kimlik doğrulama denetimleri gibi bazı işlevlerini yeniden kullanarak kendi Google Veri uygulamanızı oluşturabilirsiniz. Bu bölümün geri kalanında, Salesforce.com kişilerinizi Google E-tablosuna aktaran bir uygulamanın nasıl oluşturulacağını göstereceğim.

Basit bir S-Control yayınlama

S-Control, Salesforce.com tarafından barındırılan ve kullanıcılar uygulamanıza eriştiğinde web tarayıcılarında yürütülen bir dosyadır. S-Control, web tarayıcılarında gösterebileceğiniz veya HTML, CSS ya da JavaScript gibi herhangi bir türde içerik barındırabilir.

Salesforce.com ve Google mashup'ında oldukça hareketli birkaç bölüm var. Bu yüzden ilk olarak, JavaScript'in derinlerine binmeden önce tüm tesisatın doğru olduğundan emin olmak için basit bir S-Control çağrısı yapan kişiler listesi sayfasına "Google'a Aktar" düğmesini ekledik.

Apex projenizde "S-Controls" klasörünü sağ tıklayın ve Apex | New S-Control'ü seçin. Yeni S-Control'e export_contacts etiketini ve adını verin, türü Özel HTML olarak bırakın ve Son'u tıklayın.

Yeni S-Control, iskelet HTML dosyası içerecektir. <head> bölümüne bir grup JavaScript ekleyeceksiniz. Ancak önce kişiler dışa aktarılırken kullanıcıya gösterilecek bir şey olması için önce <body> öğesini doldurabilirsiniz. "Beklenecek noktaları" ve bir Google E-tablo logosu göstermek için bu HTML'yi S-Control'ünüzün gövdesine kopyalayın:

<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>

Artık S-Control'ü yayınlayabilir ve başlatılacak bir düğme oluşturabilirsiniz.

  1. S-Control dosyasını yayınlamak için Eclipse kullanın:
    • Apex projenizi sağ tıklayın ve Apex | Salesforce ile senkronize et'i seçin.
    • Dizin ağacında yeni S-Control'ünüzü bulun, sağ tıklayın ve Uzaktan kumandayı geçersiz kıl ve sunucuda yayınla'yı seçin.
    • S-Control'ünüzü bulamıyorsanız Apex Araç Seti'ni sizin için önceden yüklemiş olabilir, ancak en son kodun sunucu üzerinde çalıştığından emin olmak için senkronizasyon perspektifini kullanmak iyi bir fikirdir.
  2. Bu S Kontrolü başlatacak düğmeyi tanımlamak için Salesforce.com kullanıcı arayüzünü kullanın:
    • "Uygulama Kurulumu" menüsünde Özelleştir | Kişiler | Düğmeler ve Bağlantılar'ı tıklayın.
    • "Özel Düğmeler ve Bağlantılar" bölümünde Yeni'yi tıklayın.
    • Etiket için Google'a Aktar'ı girin ve adı Dışa Aktar_Google olarak bırakın.
    • Görüntüleme Türü olarak "Liste Düğmesi"ni seçin.
    • İçerik Kaynağı olarak "Özel S Kontrolü"nü seçin.
    • Davranış olarak "Mevcut kenar çubuğunda kenar çubuğunda göster"i seçin.
    • Özel S Denetimleri menüsünden "disa_aktarma_iletimleri"ni seçin.
  3. Düğmeyi kişi listesine ekleyin:
    • "Uygulama Kurulumu" menüsünde Özelleştir | Kişiler | Arama Düzenleri'ni tıklayın.
    • "Kişi Listesi Görünümü" satırında Düzenle'yi tıklayın.
    • "Google'a aktar"ı işaretleyin ve düğmeyi eklemek için sağ (>) oku tıklayın.
    • Kaydet'i tıklayın.
  4. Uygulamayı test edin:
    • Kişiler sekmesini tıklayın.
    • Görünüm olarak "Tüm Kişiler"i seçin ve Git'i tıklayın.
    • Yepyeni Google'a Aktar düğmesini tıklayın.
    • "Beklemede_noktalar"ı izleyin ancak başka bir şeyin olmasını beklemeyin.

Google E-Tablolar ile etkileşimde bulunma

Google Takvim Mashup'ın kaynağına bakarsanız gcal_snippet.scf dosyasının bir Google Takvim sunucusu için soyutlama içerdiğini görürsünüz. Google E-Tablolar'la etkileşimde bulunmak için bir Google E-Tablolar sunucusu için benzer bir dosya oluşturmanız gerekir. Ron Hess'in Salesforce.com AJAX proxy'sini kullanıp Google AuthSub ile kimlik doğrulaması yapmak için kullandığım kodu kullanarak, etkinlikleri Google Takvim'e yazan işlevin yerini Google E-Tablolar'a bilgi yazan bir işlevle değiştirdim. Bu dosyanın tam kaynağına gspreadsheet_snippet.scf adresinden ulaşabilirsiniz.

Ardından, iletişim bilgileri için Salesforce.com'u sorgulamak ve bir Google E-Tablosu'na yazmak üzere export_contacts.scf S-Control'e JavaScript ekledim. Salesforce.com'dan kolayca veri alabilirsiniz. Veriler döndürüldüğünde bir sorgu oluşturup bir geri çağırma işlevi sağlamanız yeterlidir. Örneğin:

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

Salesforce.com'dan iletişim bilgilerini aldığınızda, bunları nereye aktaracağınızı belirlemeniz gerekir. RESTful Google Veri protokolünde her e-tablo benzersiz bir URL ile tanımlanabilir. Bir kullanıcının e-tablo listesini (ve ilgili URL'leri) meta feed URL'sini sorgulayarak alabilirsiniz: http://spreadsheets.google.com/feeds/spreadsheets/private/full. Aşağıdaki yöntem, bu e-tabloları tekrarlayarak belirli bir başlığa sahip bir e-tablo arar. Doğru e-tabloyu bulduğunda öncelikle çalışma sayfası listesini alır, ardından ilk çalışma sayfasına ait hücre feed'i URL'sini döndürür.

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);
    }
  }
}

Google E-Tablolar Veri API'sinde sunulan feed'ler hakkında daha fazla bilgiyi Referans Kılavuzu'nda bulabilirsiniz.

queryCallback işlevi, hücre güncelleme isteklerini göndermek için gereken hücre feed'i URL'sini bulmak üzere getCellFeedUrl yöntemini kullanır, ardından iletişim bilgilerini her defasında bir hücre olarak yazar.

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
}

updateCell yöntemi, gspreadsheet_snippet.scf S-Control'de bulunur. Yöntem, belirtilen satır ve sütundaki hücrenin düzenleme URL'sini alır, ardından güncellenen hücrenin Google Verisini içeren bir HTTP PUT mesajı gönderir:

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);
} 

Hücreleri Google E-Tablolar veri API'si ile güncelleme hakkında daha fazla bilgiyi Geliştirici Kılavuzu'nda bulabilirsiniz.

Google E-Tablolar veri API'si https://spreadsheets.google.com alt alanını kullandığından, yukarıdaki kodun çalışması için Salesforce.com AJAX proxy sunucusunu yapılandırmanız ve https://spreadsheets.google.com alanını eklemeniz gerekir.

Ayrıca, verileri muhafazaya almak için Google Dokümanlar'a gitmeniz ve yeni bir e-tablo oluşturmanız gerekir. Bunu Salesforce.com Kişileri olarak kaydettiğinizden emin olun.

Bu S Denetimlerini yükledikten sonra iletişim bilgilerinizi bir Google E-tablosuna aktarabilirsiniz. Peki diğer taraftan ne yapmam gerekir? Salesforce.com ve Google Veri API'ları hakkında yeni bilginizle Google E-Tablolar'dan Salesforce.com'a iletişim bilgilerini aktarmak için bazı kodlar da yazabilirsiniz.

Sonuç

Bu makale yüzeyde kalır ancak Salesforce.com platformu ve Google Veri API'leri hakkında bilgi sahibi olduğunuza göre bu güçlü sistemlerden yararlanmak için yazabileceğiniz tüm uygulamaları düşünün. Google Veri API'leri ailesi sürekli olarak büyüyerek uygulamalarınızda yararlanabileceğiniz daha fazla bilgi sunuyor. Salesforce.com platformu da bu makalede ele alınmayan birçok faydalı araç sunuyor. Bir sonraki kurumsal mashup'ınızı AppApp'te arayacağım.

Keyifli kodlamalar!

Kaynaklar