0

Ich habe Schwierigkeiten, verfügbare Daten für ausgewählte Kunden aus Tabellenkalkulation in App-Maker-Formular zu präsentieren, wenn Mitarbeiter diese ändern oder leere Felder aktualisieren möchten. Client-Seite Code:Wie kann ich Kundendaten aus Tabellenkalkulation in Formular in App Maker für Update präsentieren?

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

Server-Side-Code:

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 
    } 

Vielen Dank für jede Antwort oder einen Vorschlag.

Prost

Antwort

0

Theoretisch sollte dieser Code Ausnahme auslösen, da Channel Array und Array nicht load Methode:

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

Es ist von Ihnen Code nicht klar, was Sie versuchen, zu tun ... Versuchen Sie es zu debuggen und häufiger in die Browser-Konsole zu schauen (F12 oder Strg + Umschalt + J).

Weiterführende Literatur:

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