Есть ли альтернатива коду ниже для прикрепления файлов в электронной таблице Google (ошибка амортизации (UIapp))? - PullRequest
0 голосов
/ 27 января 2019

Я должен признать, что не могу запрограммировать решение, которое ищу с нуля, обычно я манипулирую кодами, доступными для решения проблем, с которыми я сталкиваюсь регулярно. Проблема при запуске кода, который я использовал

UiApp устарел. Пожалуйста, используйте вместо этого HtmlService.

Я изучил документацию по Htmlservice, но не понял, как мне преобразовать весь код UIapp в функциональный HTML-код. Если кто-то уже решил проблему с вложением файлов из-за устаревания (UIapp), то это было бы очень полезно.

Или, если кто-то может предложить мне что-нибудь, что я могу использовать в качестве альтернативы, пожалуйста, сообщите мне.

  // upload document into google spreadsheet
  // and put link to it into current cell

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

  function doGet(e) {
    var app = UiApp.createApplication().setTitle("upload attachment into Google Drive");
    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('Submit'));
    app.add(form);
    SpreadsheetApp.getActiveSpreadsheet().show(app);
    return HtmlService.createHtmlOutputFromFile('Index');
  }

  function doPost(e) {
    var app = UiApp.getActiveApplication();
    app.createLabel('saving...');
    var fileBlob = e.parameter.thefile;
var doc = DriveApp.getFolderById('enterfolderId').createFile(fileBlob);
    var label = app.createLabel('file uploaded successfully');

    // 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('file uploaded successfully');
    app.add(label);
    SpreadsheetApp.openById(activeSpreadsheet).getSheetByName(activeSheet).getRange(activeCell).setFormula(value);
    app.close();
    return app;
  }

1 Ответ

0 голосов
/ 31 января 2019

У меня была эта проблема несколько секунд назад, я использую компьютер Mac. Я открыл свой APi на Google Chrome и, к сожалению, увидел, что это UiApp устарела. Пожалуйста, используйте вместо этого HtmlService. ' Простой ответ: SWITCH TO SAFARI после открытия моего скрипта в safari проблема решена:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...