我如何制作迭代上传文件? [英] How can I make an iterated upload files?
本文介绍了我如何制作迭代上传文件?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个google apps脚本来上传文件:
函数doGet(){
...
选择代码文件
...
返回应用程序;
}
doPost函数(e){
...
代码将文件添加到文件夹
...
返回应用程序;
}
我想重复n次文件上传。我能怎么做?
谢谢
raffaele
解决方案
href =https://stackoverflow.com/a/22280662/3169581> Serge的帮助,我能够完成我开始的这一切。
//从此处找到的脚本修改http://www.googleappsscript.org/miscellaneous/creating-form-elements-dynamically-using-google-apps-script-gas
函数doGet(){
var app = UiApp.createApplication();
var panel = app.createVerticalPanel();
var formPanel = app.createFormPanel();
var instructionsLabel = app.createLabel('把你的指示放在这里');
var filesLabel = app.createLabel('Add Files to Upload');
var table = app.createFlexTable()。setId('table')。setTag('0'); //这里标签会计算文件的数量
//为表格写入标题
var header = app.createLabel('File(s)');
table.setWidget(0,0,header);
//添加第一行文件
addFirstRow(app);
var hidden = app.createHidden()。setId('hiddenRowHolder')。setName('hidden')。setValue(table.getTag());
//添加一个按钮提交信息
var button = app.createSubmitButton('Upload File(s)');
panel.add(instructionsLabel).add(filesLabel).add(table).add(hidden).add(button);
formPanel.add(panel);
app.add(formPanel);
返回应用程序;
}
函数addFirstRow(app){
var table = app.getElementById('table');
var tag = parseInt(table.getTag());
Logger.log(tag);
var numRows = tag + 1;
if(numRows> 1){
table.removeCell(numRows-1,5);
table.removeCell(numRows-1,4);
}
Logger.log(numRows);
var uploadWidget = app.createFileUpload();
var uploadWidgetName = uploadWidget.setName('file'+ numRows);
var uploadWidgetId = uploadWidget.setId('file'+ numRows);
table.setWidget(numRows,0,uploadWidget);
table.setTag(numRows.toString());
addButtons(app);
}
函数addButtons(app){
var table = app.getElementById('table');
var numRows = parseInt(table.getTag());
//创建处理程序以添加/删除行
var addRemoveRowHandler = app.createServerHandler('addRemoveRow');
addRemoveRowHandler.addCallbackElement(table);
//添加行按钮和处理程序
var addRowBtn = app.createButton('+').setId('addOne')。setTitle('Add row');
table.setWidget(numRows,4,addRowBtn);
addRowBtn.addMouseUpHandler(addRemoveRowHandler);
//删除行按钮和处理程序
var removeRowBtn = app.createButton(' - ')。setId('removeOne')。setTitle('Remove row');
table.setWidget(numRows,5,removeRowBtn);
removeRowBtn.addMouseUpHandler(addRemoveRowHandler);
}
function addRemoveRow(e){
Logger.log(e.parameter.source);
var app = UiApp.getActiveApplication();
var table = app.getElementById('table');
var tag = parseInt(e.parameter.table_tag);
var hidden = app.getElementById('hiddenRowHolder');
var source = e.parameter.source;
//Logger.log(tag);
if(source =='addOne'){
table.setTag(tag.toString());
hidden.setValue(tag + 1);
addFirstRow(app);
}
if(source =='removeOne'){
if(tag> 1){
//将标签减一个
var numRows =标签-1;
table.removeRow(tag);
//设置表格的新标签
table.setTag(numRows);
hidden.setValue(numRows);
//在前一行添加按钮
addButtons(app);
}
}
返回应用;
}
函数doPost(e){
var numFiles = Number(e.parameter.hidden);
Logger.log(numFiles);
for(var i = 1; i <= numFiles; i ++){
var fileBlob = e.parameter ['file'+ i];
var newFile = DocsList.getFolderById(Your File Id Goes Here)。createFile(fileBlob); //用文件夹ID替换字符串,您要放置文件
}
var app = UiApp.getActiveApplication();
var label = app.createLabel(已成功上传numFiles +'文件');
app.add(label);
返回应用程序;
}
I have a google apps script to upload files:
function doGet () {
...
select code file
...
return app;
}
doPost function (e) {
...
code add file to folder
...
return app;
}
I want to repeat n times the file uploads. How can I do? thanks
raffaele
解决方案
With some help from Serge, I was able to finish what I started on this.
//modified from script found here http://www.googleappsscript.org/miscellaneous/creating-form-elements-dynamically-using-google-apps-script-gas
function doGet() {
var app = UiApp.createApplication();
var panel = app.createVerticalPanel();
var formPanel = app.createFormPanel();
var instructionsLabel = app.createLabel('Put your instructions here');
var filesLabel = app.createLabel('Add Files to Upload');
var table = app.createFlexTable().setId('table').setTag('0'); //Here tag will count the number of files
//Write the header for the table
var header = app.createLabel('File(s)');
table.setWidget(0, 0, header);
//Add the first row of files
addFirstRow(app);
var hidden = app.createHidden().setId('hiddenRowHolder').setName('hidden').setValue(table.getTag());
//Add a button to submit the info
var button = app.createSubmitButton('Upload File(s)');
panel.add(instructionsLabel).add(filesLabel).add(table).add(hidden).add(button);
formPanel.add(panel);
app.add(formPanel);
return app;
}
function addFirstRow(app){
var table = app.getElementById('table');
var tag = parseInt(table.getTag());
Logger.log(tag);
var numRows = tag+1;
if(numRows >1){
table.removeCell(numRows-1, 5);
table.removeCell(numRows-1, 4);
}
Logger.log(numRows);
var uploadWidget = app.createFileUpload();
var uploadWidgetName = uploadWidget.setName('file'+numRows);
var uploadWidgetId = uploadWidget.setId('file'+numRows);
table.setWidget(numRows, 0, uploadWidget);
table.setTag(numRows.toString());
addButtons(app);
}
function addButtons(app){
var table = app.getElementById('table');
var numRows = parseInt(table.getTag());
//Create handler to add/remove row
var addRemoveRowHandler = app.createServerHandler('addRemoveRow');
addRemoveRowHandler.addCallbackElement(table);
//Add row button and handler
var addRowBtn = app.createButton('+').setId('addOne').setTitle('Add row');
table.setWidget(numRows, 4, addRowBtn);
addRowBtn.addMouseUpHandler(addRemoveRowHandler);
//remove row button and handler
var removeRowBtn = app.createButton('-').setId('removeOne').setTitle('Remove row');
table.setWidget(numRows, 5, removeRowBtn);
removeRowBtn.addMouseUpHandler(addRemoveRowHandler);
}
function addRemoveRow(e){
Logger.log(e.parameter.source);
var app = UiApp.getActiveApplication();
var table = app.getElementById('table');
var tag = parseInt(e.parameter.table_tag);
var hidden = app.getElementById('hiddenRowHolder');
var source = e.parameter.source;
//Logger.log(tag);
if(source == 'addOne'){
table.setTag(tag.toString());
hidden.setValue(tag+1);
addFirstRow(app);
}
else if(source == 'removeOne'){
if(tag > 1){
//decrement the tag by one
var numRows = tag-1;
table.removeRow(tag);
//Set the new tag of the table
table.setTag(numRows);
hidden.setValue(numRows);
//Add buttons in previous row
addButtons(app);
}
}
return app;
}
function doPost(e) {
var numFiles = Number(e.parameter.hidden);
Logger.log(numFiles);
for (var i = 1; i<=numFiles; i++){
var fileBlob = e.parameter['file'+i];
var newFile = DocsList.getFolderById("Your File Id Goes Here").createFile(fileBlob);//replace string with folder id where you want to place your files
}
var app = UiApp.getActiveApplication();
var label = app.createLabel(numFiles +' file(s) uploaded successfully');
app.add(label);
return app;
}
这篇关于我如何制作迭代上传文件?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文