将文件上传到电子表格需要特殊权限

时间:2017-04-02 20:18:20

标签: google-apps-script google-sheets

我正在为Google表格编写一个脚本,该脚本会打开一个上传文件的表单,并调用服务器端函数来处理上传的文件。我遇到的问题是没有调用服务器端函数,并调用失败处理程序,并显示错误消息,说我没有权限执行操作。 如果我使用null参数调用服务器端函数而不是传入表单,那么函数将成功调用。

这是我的脚本:

function onOpen() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var csvMenuEntries = [{name: "Process bank statement file", functionName: "openUploadPaymentsDialog"}];
  ss.addMenu("AG_Menu", csvMenuEntries);
}

function openUploadPaymentsDialog(e) {
  var html = HtmlService.createHtmlOutputFromFile('UploadPaymentsDialog');
  SpreadsheetApp.getUi().showModalDialog(html, 'Upload .NDA file');
  Logger.log('dialog opened');
}

function handleFileUpload(theForm) {
  Logger.log('file uploaded');      
}

和HTML表单:

<!DOCTYPE html>
<html>
  <head>
    <base target="_top">
  </head>
  <body>
    <form>
      <input type="file" name="theFile"/><br/><br/>
      <input type="button" value="Submit" onclick="onSubmit(this.parentNode);"/>
    </form>
    <div id="output"/>
    <script>
      function onSubmit(theForm) {
        google.script.run
                .withSuccessHandler(onSuccess)
                .withFailureHandler(onFailure)
                .handleFileUpload(theForm);
//if I call handleFileUpload with null as argument then call succeeds
      }

      function onFailure(error){
        var div = document.getElementById('output');
        div.innerHTML = "ERROR: " + error.message;
      }

      function onSuccess(f){
        google.script.host.close();
      }
    </script>

  </body>
</html>

脚本绑定到电子表格,我不是电子表格的所有者,但我有权编辑。我是从我的用户(非所有者)运行脚本。

是否只有所有者才能上传文件?那是为什么?

1 个答案:

答案 0 :(得分:0)

我发现浏览器我可能会遇到一些问题。它是Debian Linux下的Google Chromium。我刚刚尝试使用Firefox,它运行正常。