0

Googleスプレッドシートのスプレッドシートのカスタムメニューを作成しました。最後に追加しようとしているのは、ファイル - インポート - アップロード(コンピュータからファイルを選択)ダイアログボックスへのショートカットを持つメニュー項目です。 https://developers.google.com/apps-script/guides/dialogs#file-open_dialogsGoogleスプレッドシートのカスタムメニューのショートカットをファイル - インポート - アップロードダイアログボックス

私が持っている作業が、Googleピッカーは、Googleドライブからファイルを選択するに適しています:私はGoogleのピッカーを使用してみましたが

は、ここでは例を使用していました。 私が必要とするのは、私のカスタムメニューからFile - Import - Upload(コンピュータからファイルを選択)ダイアログを開くだけです。 私はそれが簡単だと思ったが、それをまだ理解していない。どうすればこれを達成できますか?

答えて

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

Apps Scriptで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(); 
} 
関連する問題