0

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

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

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

我应该使用 fileUpload 并尝试从 blob 中协调它吗?任何有一个干净的解决方案?

4

2 回答 2

1

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

试试这个小代码:(此处提供测试应用程序,要求授权,因为您的帐户有效)

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
  }
于 2013-10-29T10:35:09.550 回答
0

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

于 2013-10-29T12:59:02.407 回答