0

私は、スプレッドシートから選択した顧客の利用可能なデータを、スタッフが変更したり空のフィールドを更新したい場合に、アプリケーションメーカーのフォームに表示するのに苦労しています。 クライアント側コード:スプレッドシートの顧客データをアプリケーションメーカーのフォームに表示して更新するにはどうすればよいですか?

function getDetails() { 
    var props = app.currentPage.properties; 
    var page = app.pages.Search; 
    var Channel = app.datasources.Update.items; 
    var Customer = page.descendants.Sheets.value; 
    props.Loading = true; 
    props.Error = null; 
    google.script.run 
    .withFailureHandler(function(error) { 
     props.Loading = false; 
     props.Error = JSON.stringify(error); 

     console.error(error); 
    }) 
    .withSuccessHandler(function(Channel) { 
    props.Loading = false; 
    page.Channel = Channel; 
    var items = []; 
    items = getChannels(props.SelectedSheet); 
    Channel.items.load(); // this line dosen't work and it doesn't load the data into form 
     if (Channel && Channel.length > 0) { 
     page.SelectedSheet = Channel[0]; 
     } }) 
    .getDetails(props.SelectedSheet); 
} 

サーバー側のコード:

function getDetails()(customer){ 
    var spreadSheet = SpreadsheetApp.openById("***").getSheetByName('TRACKER'); 
    var data=spreadSheet.getDataRange().getValues(); 
    var channels = []; 
    var Name = customer; 
    var string1 = Name; 
    var array1 = string1.split(";"); // in here I extract row number belong to customer to get data 
    var destrow = []; 
    destrow.push(data[array1[0]][0],data[array1[0]][1],data[array1[0]][2],data[array1[0]][3],data[array1[0]][4],data[array1[0]][5]); 
    channels.push(destrow); 
// return channels; 
    return channels.map(function(Channel){ 
    return Channel;}); // return array of field data to presented in app maker form 
    } 

は、任意の答えや提案をいただき、ありがとうございます。

乾杯理論的には

答えて

0

Channelが配列と配列であることから、このコードは、例外をスローする必要がありload方法はありません:それはあなたがしようとしているものを、あなたのコードからは明らかではない

function getDetails() { 
    ... 
    var Channel = app.datasources.Update.items; 

    ... 
    // your first Channel variable is never used and is overridden with 
    // Channel callback parameter 
    .withSuccessHandler(function(Channel) { 
     // this line does nothing, since all App Maker objects are sealed 
     page.Channel = Channel; 
     // TypeError: load is not a function 
     Channel.items.load(); 
    ... 
    } 

をこれをデバッグして、ブラウザコンソールをより頻繁に調べてみてください(F12またはCtrl + Shift + J)。

さらに読書:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/seal

関連する問題