0

我已经在Google Spreadsheets中为电子表格建立了自定义菜单。我想添加的最后一件事是带有文件 - 导入 - 上传(从计算机中选择一个文件)快捷方式的菜单项。谷歌电子表格自定义菜单快捷方式文件 - 导入 - 上传对话框

我一直在使用谷歌选择器试过,这里使用的例子:https://developers.google.com/apps-script/guides/dialogs#file-open_dialogs

我有工作,但谷歌选择器非常适用于从谷歌驱动器选择文件。 我所需要的仅仅是从我的自定义菜单中打开文件 - 导入 - 上传(从您的计算机中选择一个文件)对话框。 我认为这很容易做,但还没有弄清楚。我怎样才能做到这一点?

回答

0

您可以在对话框中使用HTML输入Type =“file”元素上传文件,如下所示。

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对话框的形式。这个fileBlob用于在驱动器中创建一个文件。

0

如果您正在寻找使用带Google Apps脚本的Google Picker的代码示例,可以使用Amit Agarwal的示例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(); 
}