我试图弄清楚使用Google脚本将图像从用户硬盘复制到其Google云端硬盘上的公用文件夹的流程。(请参阅https://developers.google.com/apps-script/reference/utilities/utilities#unzip%28BlobSource%29)问题是,我是否必须编写一个我从script.google作为网络应用发布的google脚本。 .com,还是可以在客户端浏览器的javascript中包含脚本?Google提供了一次上传图片的示例:“ developers.google.com/drive/web/quickstart/quickstart-js”
我想上传一个压缩的图像文件,将其解压缩,然后减小大小,然后再将其存储在用户的Google云端硬盘中。
这是一些解压缩文件的代码,但看起来它们正在script.google.com上运行;它不起作用:(http://webcache.googleusercontent.com/search?q=cache:NsTvlj17H4MJ:ctrlq.org/code/19506-google-drive-hosting&client=firefox-a&hs=ZEF&hl=en&gl=us&strip=1)
这是我为另一个用户修改的脚本,该脚本允许将多个文件(验证可能会将文件类型限制为图像)从用户的硬盘驱动器上载到特定的文件夹。该文件夹将设置为公开共享。您只需将folderID字符串更改为与您要发送文件的文件夹相匹配的字符串。将此脚本放在Google Sites页面中,并在doPost(e)函数中更改ID,它应该执行您想要的操作。我不确定压缩和解压缩。您可以将脚本作为公共Webapp小部件发布在Google网站中。
您可以在此处看到UiApp界面,但是如果尝试上传一些内容,则会收到一个错误消息,因为自从我将此答案实时发布以来,我已经删除了驱动器的folderId链接。如果您需要更多有关其运作方式或运作方式的解释,请告诉我。使用+和-按钮可将更多文件添加到上载中,或删除您不想包含的文件。这些文件可以是zip或任何文件类型,但是不包含用于上传后解压缩任何内容的代码。
//modified from script found here http://www.googleappsscript.org/miscellaneous/creating-form-elements-dynamically-using-google-apps-script-gas
//additional help from Serge to fix an error in my original code.
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();
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){
//Dcrement 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 FOLDER ID").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;
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句