谷歌表UiApi到htmlservice脚本文件上传

时间:2019-05-08 12:39:59

标签: google-apps-script google-sheets

我遇到了问题,因为Google不再支持UIapi,因此我无法使用下面的代码。有人可以帮我解决这个问题,然后重新编辑为html服务吗?我对这些东西一无所知。代码是很久以前从其他站点复制的。试图找到过去两天的解决方案,但一无所获。真的很棒。 问候

///将文档上传到Google电子表格     //并将其链接放入当前单元格中

function onOpen(e) {
  var ss = SpreadsheetApp.getActiveSpreadsheet()
  var menuEntries = [];
  menuEntries.push({name: "", functionName: "doGet"});
  ss.addMenu("", menuEntries);
}

function doGet(e) {
  var app = UiApp.createApplication().setTitle("");
  SpreadsheetApp.getActiveSpreadsheet().show(app);
  var form = app.createFormPanel().setId('frm').setEncoding('multipart/form-data');
  var formContent = app.createVerticalPanel();
  form.add(formContent);  
  formContent.add(app.createFileUpload().setName('thefile'));

  // these parameters need to be passed by form
  // in doPost() these cannot be found out anymore
  formContent.add(app.createHidden("activeCell", SpreadsheetApp.getActiveRange().getA1Notation()));
  formContent.add(app.createHidden("activeSheet", SpreadsheetApp.getActiveSheet().getName()));
  formContent.add(app.createHidden("activeSpreadsheet", SpreadsheetApp.getActiveSpreadsheet().getId()));
  formContent.add(app.createSubmitButton(''));
  app.add(form);
  SpreadsheetApp.getActiveSpreadsheet().show(app);
  return app;
}

function doPost(e) {
  var app = UiApp.getActiveApplication();
  app.createLabel('');
  var fileBlob = e.parameter.thefile;
  var doc = DriveApp.getFolderById('0BzI2pkyLXZ5maWo5b2Uyb3JWdzQ').createFile(fileBlob);
  var label = app.createLabel('');

  // write value into current cell
  var value = 'hyperlink("' + doc.getUrl() + '";"' + doc.getName() + '")'
  var activeSpreadsheet = e.parameter.activeSpreadsheet;
  var activeSheet = e.parameter.activeSheet;
  var activeCell = e.parameter.activeCell;
  var label = app.createLabel('');
  app.add(label);
  SpreadsheetApp.openById(activeSpreadsheet).getSheetByName(activeSheet).getRange(activeCell).setFormula(value);
  app.close();
  return app;
}

0 个答案:

没有答案