将Google电子表格上传到Google网站

时间:2015-11-12 02:02:35

标签: google-apps-script google-sheets google-sites

我首先要说明的最终目标是显示我们的公司目录(我们的员工姓名/职位/分机号/办事处位置/电子邮件的列表),该目录位于Google表格中,位于我们的某个Google协作平台中的页面。

我尝试使用Google的嵌入功能,但它很有效......但它非常笨重,没有“排序”功能,而且看起来很奇怪。

我在3个月前从网上某个地方提取了一个Google Apps脚本,实际上确实让我感到高兴:

Link to Screenshot of the Current page

(这与目前在Google协作平台页面上显示的一样。因此,在此屏幕截图中,嵌入式工作表位于顶部。通过脚本导入的工作表位于下方。是的,它们都在同一页面上我正在测试!)

这是我使用的代码(我认为 - 我不记得我是如何实现的):

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 Apps脚本代码,如果是这样,我如何实现它以同样类型输出Sheet数据格式如截图?

或者,是否有更好的方法在Google表格中显示此工作表数据?

1 个答案:

答案 0 :(得分:0)

完全不同的替代方案是使用Romain Vialard's "awesome tables" gadget。它很棒......很棒,而且非常容易使用。此外,它承认过滤器......