如何将电子表格中的客户数据呈现在应用程序制造商中以进行更新?

时间:2017-10-03 04:53:54

标签: google-apps-script google-sheets client-server google-app-maker

我一直在努力为选定的客户提供从电子表格到应用制造商表格的可用数据,因为员工希望更改或更新空白字段。 客户端代码:

    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
  }

感谢您的任何回答或建议。

干杯

1 个答案:

答案 0 :(得分: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