我想制作一个谷歌脚本来为课堂生成文件夹结构。我想通过电子表格加载学生姓名和电子邮件。在 UI 中,您应该能够选择要使用的电子表格。
文件夹结构不是问题,但我在选择和加载电子表格时遇到了问题。
我希望它是一个网络应用程序,而不是电子表格应用程序中的脚本。
我应该使用 fileUpload 并尝试从 blob 中协调它吗?任何有一个干净的解决方案?
我想制作一个谷歌脚本来为课堂生成文件夹结构。我想通过电子表格加载学生姓名和电子邮件。在 UI 中,您应该能够选择要使用的电子表格。
文件夹结构不是问题,但我在选择和加载电子表格时遇到了问题。
我希望它是一个网络应用程序,而不是电子表格应用程序中的脚本。
我应该使用 fileUpload 并尝试从 blob 中协调它吗?任何有一个干净的解决方案?
在 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
}
当 gas 有自己的文件选择器弹出对话框时,没有理由重新发明文件选择器。用它。对于 uiapp,请参阅 https://developers.google.com/apps-script/reference/ui/docs-list-dialog