我想制作一个谷歌脚本,为学校课程生成文件夹结构。 我想通过电子表格加载学生姓名和电子邮件。在UI中,您应该能够选择要使用的电子表格。
文件夹结构不是问题,但我在选择和加载电子表格时遇到了问题。
我希望它是一个webapp,而不是电子表格应用程序中的脚本。
我应该使用fileUpload并尝试从blob中对其进行协调吗?有没有一个干净的解决方案?
答案 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