0

Я создал пользовательское меню для электронной таблицы в Google Таблицах. Последнее, что я пытаюсь добавить, - это элемент меню с ярлыком в диалоговом окне «Файл - Импорт - Загрузка» (выберите файл с вашего компьютера).Ярлык пользовательского меню Google Spreadsheet для диалогового окна «Файл - Импорт - Загрузка»

Я попытался с помощью Google Picker, использовал пример здесь: https://developers.google.com/apps-script/guides/dialogs#file-open_dialogs

У меня есть, что работает, но Google Picker хорошо работает для выбора файлов из Google Drive. Все, что мне нужно, это просто открыть диалоговое окно «Файл - импорт - загрузка» (выберите файл с вашего компьютера) из моего пользовательского меню. Я думал, что это будет легко сделать, но пока не понял. Как я могу это сделать?

ответ

0

Вы можете загрузить файл с помощью элемента ввода «Тип» = «файл» HTML в вашем диалоговом окне.

GS сценарий:

// Your menu item must call FileUplaodDialog when clicked. 
    function FileUploadDialog() { 
     var html = HtmlService.createHtmlOutputFromFile('FileInput') 
     .setHeight(100) 
     SpreadsheetApp.getUi() 
      .showModalDialog(html, 'File upload dialog'); 
    } 


function uploadFile(frmdata) { 
    var fileBlob = frmdata.fileToUpload 
    if(fileBlob.getName() != "") { 
    var fldrSssn = DriveApp.getFolderById("Your Folder ID Here"); 
    var picFile= fldrSssn.createFile(fileBlob); 
    } 

} 

HTML файла: FileInput

<!DOCTYPE html> 
<html> 
    <head> 
    <base target="_top"> 
    </head> 
    <body> 
    <form id="fileform" onsubmit="event.preventDefault()"> 
    <input type="file" id ="file" name="fileToUpload"> 
    <input type="Button" value="Upload" onclick="uploadthis(this.parentNode)"> 
    </form> 
    </body> 

    <script> 
    function uploadthis(frmData){ 
    google.script.run 
    .withSuccessHandler(closeDialog) 
    .withFailureHandler(alertFailure) 
    .uploadFile(frmData); 

    } 

    function closeDialog(){ 
    google.script.host.close() 
    } 

    function alertFailure(error){ 
    google.script.host.close() 
    alert("failed Upload"+error.message) 
    } 
    </script> 

</html> 

В основном, это создает форму в диалоговом окне, которое может быть использовано для получения fileBlob. Этот файлBlob используется для создания файла на диске.

0

Если вы ищете образцы кода при использовании Google Picker с помощью скрипта приложений, вы можете использовать образец Амита Агарвала here.

Вот отрывок из учебника:

function onOpen() { 
    SpreadsheetApp.getUi().createMenu('Google Picker') 
     .addItem('Choose Folder', 'showPicker') 
     .addToUi(); 
} 

/** 
* Displays an HTML-service dialog in Google Sheets that contains client-side 
* JavaScript code for the Google Picker API. 
*/ 
function showPicker() { 
    var html = HtmlService.createHtmlOutputFromFile('Picker.html') 
     .setWidth(600) 
     .setHeight(425) 
     .setSandboxMode(HtmlService.SandboxMode.IFRAME); 
    SpreadsheetApp.getUi().showModalDialog(html, 'Select Folder'); 
} 

function getOAuthToken() { 
    DriveApp.getRootFolder(); 
    return ScriptApp.getOAuthToken(); 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^