Загрузка таблицы Google на сайт Google

Я хотел бы начать с констатации того, что конечной целью является отображение каталога нашей компании (список имен наших сотрудников / должность / добавочный номер / адрес офиса / адрес электронной почты), который находится в Google Sheet, на странице в одном. наших сайтов Google.

Я попытался использовать функцию встраивания Google, и она работает... но она очень неуклюжая, не имеет функции "сортировки", и выглядит просто странно.

Я извлек скрипт Google Apps из Интернета где-то 3 месяца назад, и он действительно потянул меня так, что я был счастлив:

Ссылка на скриншот текущей страницы

(Это то, что отображается в настоящее время на странице Сайтов Google. Итак, на этом снимке экрана встроенный лист находится сверху. Лист, когда он импортирован с помощью сценария, находится ниже. Да, они оба на одной странице. I' м в тестировании!)

Вот код, который я использовал (я думаю - я не помню, как я его реализовал):

function myFunction() {

}

function onOpen(){
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  if(ScriptProperties.getProperty("page url") == null){
   ss.addMenu("List page", [{name: "Create list", functionName: "create_list"},null,
                        {name: "Fetch list items", functionName: "fetch_items"}]);
  }
  else{
    ss.addMenu("List page", [{name: "Push Items", functionName: "push_items"}]);
  }
}

function create_list() {
  var data = SpreadsheetApp.getActiveSheet().getDataRange().getValues();
  var parent_page = Browser.inputBox("URL of the parent page:");
  var title = Browser.inputBox("Choose a name for your list page:");
  var data = SpreadsheetApp.getActiveSheet().getDataRange().getValues();
  var list = SitesApp.getPageByUrl(parent_page).createListPage(title, title.split(' ').join(''), '', data[0]);
  ScriptProperties.setProperty("page url", list.getUrl());
  onOpen();
  push_items();
}

function push_items(){
  var done = false;
  while(!done){
    try{
      var data = SpreadsheetApp.getActiveSheet().getDataRange().getValues();
      var list = SitesApp.getPageByUrl(ScriptProperties.getProperty("page url"));
      var list_items = list.getListItems();
      for(i in list_items){
        list_items[i].deleteListItem();
      }
      for(var i = 1; i < data.length; i++){
        var item = list.addListItem(data[i]);
      }
      done = true;
    }
    catch(e){
    }
  }
  SpreadsheetApp.getActiveSpreadsheet().toast(ScriptProperties.getProperty("page url"), "List page updated", 10);
}


function fetch_items(){
  var url = Browser.inputBox("URL of your list page:");
  var col_number = Browser.inputBox("Number of columns in the list:");
  var data = new Array();
  var list_items = SitesApp.getPageByUrl(url).getListItems();
  for(i in list_items){
    var row = new Array();
    for(j = 0; j < col_number; j++){
      row.push(list_items[i].getValueByIndex(j));
    }
    data.push(row);
  }
  SpreadsheetApp.getActiveSheet().getRange(1, 1, data.length, data[0].length).setValues(data);
}


[I do not take credit for writing this!]

Поэтому я хотел бы спросить (поскольку это перестает иметь для меня особый смысл): является ли это жизнеспособным кодом для скрипта Служб Google, и если да, то как мне реализовать его для вывода данных листа аналогично формату того же типа, что и на скриншоте?

В качестве альтернативы, есть ли лучший способ для отображения этих данных листа в Google Sheets?

1 ответ

Совершенно другой альтернативой было бы использование гаджета "Потрясающие столы" Ромена Виалара. Это работает... потрясающе, и это действительно удобно. Кроме того, он допускает фильтры, ...

Другие вопросы по тегам