Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我可以在浏览器客户端上使用JavaScript中的google utilities解压吗?_Javascript_Google Apps Script_Unzip_Utilities - Fatal编程技术网

我可以在浏览器客户端上使用JavaScript中的google utilities解压吗?

我可以在浏览器客户端上使用JavaScript中的google utilities解压吗?,javascript,google-apps-script,unzip,utilities,Javascript,Google Apps Script,Unzip,Utilities,我试图弄清楚使用谷歌脚本将图像从用户硬盘复制到谷歌硬盘上的公用文件夹的流程。(请参阅)问题是,我是否必须编写一个从script.google.com发布为web应用程序的google脚本,或者是否可以在客户端浏览器的javascript中包含该脚本?谷歌有一个每次上传一张图片的示例:“developers.Google.com/drive/web/quickstart/quickstart js” 我想上传一个压缩文件的图像,解压他们,然后减少大小之前,他们被存储在用户的谷歌驱动器 下面是一些解

我试图弄清楚使用谷歌脚本将图像从用户硬盘复制到谷歌硬盘上的公用文件夹的流程。(请参阅)问题是,我是否必须编写一个从script.google.com发布为web应用程序的google脚本,或者是否可以在客户端浏览器的javascript中包含该脚本?谷歌有一个每次上传一张图片的示例:“developers.Google.com/drive/web/quickstart/quickstart js”

我想上传一个压缩文件的图像,解压他们,然后减少大小之前,他们被存储在用户的谷歌驱动器

下面是一些解压文件的代码,但看起来它们是从script.google.com运行的;它不起作用:()

是我为另一个用户修改的脚本,允许将多个文件(验证可能会将文件类型限制为图像)从用户的硬盘上载到特定文件夹。该文件夹将设置为公开共享。您只需将folderID字符串更改为与您希望文件到达的文件夹相匹配的字符串。将此脚本放在Google站点页面中,并在doPost(e)函数中更改id,它应该执行您希望它执行的操作。我不确定拉链和解扣。您可以将脚本作为公共webapp小部件发布在谷歌网站上

你可以看到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;
}
//根据此处找到的脚本修改http://www.googleappsscript.org/miscellaneous/creating-form-elements-dynamically-using-google-apps-script-gas
//Serge为修复我的原始代码中的错误提供了额外帮助。
函数doGet(){
var app=UiApp.createApplication();
var panel=app.createVerticalPanel();
var formPanel=app.createFormPanel();
var instructionsLabel=app.createLabel(“将您的说明放在这里”);
var filesLabel=app.createLabel('addfilestoupload');
var table=app.createFlexTable().setId('table').setTag('0');//这里tag将计算文件数
//写入表的标题
var header=app.createLabel('文件');
table.setWidget(0,0,头);
//添加第一行文件
addFirstRow(app);
var hidden=app.createHidden().setId('hiddenRowHolder').setName('hidden').setValue(table.getTag());
//添加一个按钮以提交信息
var button=app.createSubmitButton(“上传文件”);
panel.add(说明标签).add(文件标签).add(表格).add(隐藏).add(按钮);
formPanel.add(面板);
添加应用程序(formPanel);
返回应用程序;
}
函数addFirstRow(应用程序){
var table=app.getElementById('table');
var tag=parseInt(table.getTag());
Logger.log(标签);
var numRows=tag+1;
如果(numRows>1){
表1.removeCell(numRows-1,5);
表1.removeCell(numRows-1,4);
}
Logger.log(numRows);
var uploadWidget=app.createFileUpload();
setWidget(numRows,0,uploadWidget);
table.setTag(numRows.toString());
添加按钮(应用程序);
}
功能添加按钮(应用程序){
var table=app.getElementById('table');
var numRows=parseInt(table.getTag());
//创建用于添加/删除行的处理程序
var addRemoveRowHandler=app.createServerHandler('addRemoveRow');
addRemoveRowHandler.addCallbackElement(表);
//添加行按钮和处理程序
var addRowBtn=app.createButton('+').setId('addOne').setTitle('addrow');
表.setWidget(numRows,4,addRowBtn);
addRowBtn.AddMouseHandler(AddRemousOwHandler);
//删除行按钮和处理程序
var removowbtn=app.createButton('-').setId('removeOne').setTitle('Remove行');
表.setWidget(numRows,5,owbtn);
AddMouseHandler(AddRemousOwHandler);
}
函数addRemoveRow(e){
Logger.log(例如参数源);
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(标签);
如果(源=='addOne'){
table.setTag(tag.toString());
隐藏.setValue(标记+1);
addFirstRow(app);
}
else if(source==“removeOne”){
如果(标记>1){
//D把标签一个一个地记住
var numRows=tag-1;
表2.1(标签);
//设置表的新标记
表2.setTag(numRows);
hidden.setValue(numRows);
//在前一行中添加按钮
添加按钮(应用程序);
}
}
返回应用程序;
}
函数doPost(e){
var numFiles=编号(例如参数隐藏);
Logger.log(numFiles);

对于(var i=1;iThanks。我如何从我的javascript调用此脚本,而用户不必导航到sites.google.com?您可以将其部署为一个独立的应用程序,但随后您可能必须使用OAuth授予访问权限。最好/最安全的方法是将应用程序嵌入google站点,或将其重写为绑定到容器的脚本i中的对话框n电子表格(但电子表格对该应用程序没有用处)。将小部件放在谷歌网站页面上非常简单,特别是如果你在一个封闭的商业网络上使用谷歌商业应用程序,因为你可以限制只能访问你的商业域内的用户。谢谢。你提到“最安全”方法?你的意思是从许多使用此应用程序将文件上载到其G.Drive的人那里节省?如果许多人将此应用程序用作将图像上载到其Google Drive的独立应用程序,我是否最终要向API支付美元。我假设你正在创建一个公共存储库来存储文件(就像任何人都可以从中取出文件的储物箱)并且会指定一个特定的文件夹来放置您是其管理员的文件。