Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script Google电子表格自定义菜单文件快捷方式-导入-上载对话框_Google Apps Script_Google Sheets_Google Apps_Google Spreadsheet Api_Google Picker - Fatal编程技术网

Google apps script Google电子表格自定义菜单文件快捷方式-导入-上载对话框

Google apps script Google电子表格自定义菜单文件快捷方式-导入-上载对话框,google-apps-script,google-sheets,google-apps,google-spreadsheet-api,google-picker,Google Apps Script,Google Sheets,Google Apps,Google Spreadsheet Api,Google Picker,我在谷歌电子表格中为电子表格创建了一个自定义菜单。我最后要添加的是一个菜单项,其中有一个指向“文件-导入-上载”“从计算机中选择文件”对话框的快捷方式 我曾尝试使用Google Picker,使用了以下示例: 我有工作,但谷歌选择器工作良好,选择文件从谷歌驱动器。 我只需打开“文件-导入-上载”对话框,从“我的自定义菜单”中选择一个文件即可。 我认为这很容易做到,但还没有弄明白。如何实现这一点?您可以在对话框中使用HTML的input Type=file元素上传文件,如下所示 GS脚本: //

我在谷歌电子表格中为电子表格创建了一个自定义菜单。我最后要添加的是一个菜单项,其中有一个指向“文件-导入-上载”“从计算机中选择文件”对话框的快捷方式

我曾尝试使用Google Picker,使用了以下示例:

我有工作,但谷歌选择器工作良好,选择文件从谷歌驱动器。 我只需打开“文件-导入-上载”对话框,从“我的自定义菜单”中选择一个文件即可。
我认为这很容易做到,但还没有弄明白。如何实现这一点?

您可以在对话框中使用HTML的input 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用于在驱动器中创建文件

如果您正在寻找使用Google Picker with Apps脚本的代码示例,可以使用Amit Agarwal的示例

以下是本教程的一个片段:

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();
}