在google webapp中选择电子表格

时间:2013-10-29 09:54:27

标签: google-apps-script google-drive-api google-docs

我想制作一个谷歌脚本,为学校课程生成文件夹结构。 我想通过电子表格加载学生姓名和电子邮件。在UI中,您应该能够选择要使用的电子表格。

文件夹结构不是问题,但我在选择和加载电子表格时遇到了问题。

我希望它是一个webapp,而不是电子表格应用程序中的脚本。

我应该使用fileUpload并尝试从blob中对其进行协调吗?有没有一个干净的解决方案?

2 个答案:

答案 0 :(得分:1)

在doGet结构中使用基本的Ui元素应该相当容易。 我假设您需要选择的电子表格都在名为“dataSpreadsheets”的文件夹中,但您当然可以根据个人喜好自定义。

尝试这个小代码:(test app available here,要求授权,因为您的帐户有效)

function doGet() {
  var app = UiApp.createApplication()
  var panel = app.createVerticalPanel().setWidth('100%').setStyleAttributes({'padding':'50px','backGround':'#eeeeee'});
  var list = app.createListBox().setName('list');
  var handler = app.createServerHandler('getSS').addCallbackElement(panel);
  var btn = app.createButton('Select this spreadsheet', handler);
  var ssList = DriveApp.getFoldersByName('dataSpreadsheets');
  while (ssList.hasNext()){
    var folder = ssList.next();
  }
  if(folder!=null){
    var ss = folder.getFilesByType(MimeType.GOOGLE_SHEETS);
    while (ss.hasNext()){
      var spreadSheet = ss.next();
      list.addItem(spreadSheet.getName(),spreadSheet.getId())
    }
  }else{
    app.add(panel.add(app.createHTML('No folder named "dataSpreadsheets" in your Drive')));
    return app;
  }
  app.add(panel.add(list).add(btn))
  return app;
}

function getSS(e){
  var ss = SpreadsheetApp.openById(e.parameter.list);
  Logger.log(ss.getDataRange().getValues());
  // do what you have to do
  }

答案 1 :(得分:0)

当gas拥有自己的filepicker弹出对话框时,没有理由重新发明文件选择器。用它。对于uiapp,请参阅https://developers.google.com/apps-script/reference/ui/docs-list-dialog