2017-12-15 6 views
-1

Googleスプレッドシートからユーザーのメールアドレスを取得するアプリで作業しています。Google App Maker - 他のデータソースからのメールに基づくディレクトリ情報

この電子メールアドレスを使用して、ディレクトリからフルネームとサムネイル写真を表示したいと考えています。

Screenshot of the UI - メール&名前は、私は、すべてのユーザーのための2つは、私がディレクトリから最初の写真を取得リンクしようとすると、これまでのところ

ユーザデータ

を保護するために隠されました。

ディレクトリが新しい関係の追加をサポートしていないので、どのように2つをリンクすることができますか?

+2

コードと、この例をより完全に説明するのに適したデータを入力してください。 – LordWilmore

+0

私はデータバインディングのみを使ってそれをやろうとしたので、書かれたコードはありません。 MyDataSource&Directoryという2つのデータソースがあります。 MyDataSourceから、電子メール、マネージャーをアコーデオンに持ち込み、各レコードの対応するフルネームとサムネイルをディレクトリから取得しようとしています。残念ながら、それは何も持って来ないか、ディレクトリの最初の項目を持ち、それぞれの写真と名前ではなく、次のレコードごとに同じものを表示します –

答えて

1
  1. 新しい計算モデルを作成します。 サーバースクリプトの[データソース]タブで、以下のコードを追加します。
  2. モデル名とフィールド名を自分のものに合わせてください。

//Get the Spreadsheet Data 
var spreadsheetData = app.models.MySpreadsheetSource.newQuery().run(); 
var combinedData = []; // Place to store output for calculated model 
spreadsheetData.forEach(function(record){ //iterate the ss data 
    var query = app.models.Directory.newQuery(); //start a query for directory 
    query.filters.PrimaryEmail._equals = record.email; //set the query for the email 
    var dirRecord = query.run()[0]; //get the one record 

    //make a new record for the calculated model 
    var newRecord = app.models.Directory_Spreadsheet.newRecord(); 
    //add the data from both SS and Directory models 
    newRecord.Email = record.email; //from ss 
    newRecord.address = record.address; 
    newRecord.Full_Name = dirRecord.FullName; //from Directory 
    newRecord.Thumbnail = dirRecord.ThumbnailPhotoUrl; 
    //Add More Fields 

    combinedData.push(newRecord); //add to output 
}); 
return combinedData; //return the combine object 

このデータソースをアコーディオンで使用すると、組み合わせたデータを表示できます。

+0

これはJamesさんにとても感謝しました!フリップサイドでは、新しいデータソースへのすべてのバインディングを更新しても、データをロードするのにおよそ30〜45秒かかりますが、フィルタと検索は機能しなくなりました。それにもかかわらず、私は遊び、その機能を組み合わせるために何ができるか見ていきます。再度、感謝します –

0

1つのレコードを表示しているだけの場合は、スプレッドシートから電子メールを取得して、このようなことを行うことができます。

表示するフィールドにテキストフィールドボンディングを使用して、ディレクトリおよびラベルウィジェットにデータソースを設定したページまたはパネル。

enter image description here enter image description here

スプレッドシートから電子メールを取得した後、あなたはクライアント側に返していると仮定すると、使用:

app.datasources.Directory.query.filters.PrimaryEmail._equals = emailFromSpreadsheet; 
app.datasources.Directory.load(); 
+0

ありがとうございました。私は人のリストのためのアコーディオンを持っていて、アコーデオンのすべての詳細はスプレッドシートのデータから来ます。私がディレクトリから持って来ようとしている唯一のアイテムはサムネイルとフルネームです - スプレッドシートのデータには含まれていないアイテムです。私はまだコーディングの初心者です - 上記で提案したコードスニペットをどこに正確に追加しますか?私はこれを書き直してEmailfromSpreadsheetフィールドを見つけました - app.datasources.Directory.query.filters.PrimaryEmail._equals = app.datasources.MySpreadsheetSource.item.Email_Address then directory.load上記のように –

+0

計算されたモデルを作成し、 [データソース]タブでは、以下のコードをサーバースクリプトに追加します。コメントが長すぎるので、他の答えを見てください。 –

関連する問題