【问题标题】:Uploading csv file with Google Scripts via HTML Service - Illegal Value in property 0 [duplicate]通过 HTML 服务使用 Google 脚本上传 csv 文件 - 属性 0 中的非法值 [重复]
【发布时间】:2017-07-20 21:23:08
【问题描述】:

我正在尝试使用 Google 脚本创建一个显示 csv 的界面。但是,每当我加载文件时,我都会收到此错误

`1729820382-mae_html_user_bin_i18n_mae_html_user.js:39 Uncaught TypeError: Failed due to illegal value in property: 0
    at Td (1729820382-mae_html_user_bin_i18n_mae_html_user.js:39)
    at Pd (1729820382-mae_html_user_bin_i18n_mae_html_user.js:39)
    at 1729820382-mae_html_user_bin_i18n_mae_html_user.js:6
    at 1729820382-mae_html_user_bin_i18n_mae_html_user.js:21
    at Object.fileToCsv (1729820382-mae_html_user_bin_i18n_mae_html_user.js:38)
    at loadFile (<anonymous>:10:23)
    at HTMLInputElement.onchange (VM1402 userCodeAppPanel:1)`

控制台日志正确显示了该文件,但是当它尝试将其传递给 Google 脚本时似乎出错了。我需要特殊的文件阅读器吗?

HTML 在这里

   <!DOCTYPE html>
    <html>
    <head>
      <base target="_top">
    </head>
    <body>
      <input type="text" id="itemHolder" name="itemHolder" style="display:none"/>
      <input type="file" id="myFile" name="myFile" onchange="loadFile(event)"/>
      <p id="textStuff"></p>
    </body>
    </html>


    <script type="text/javascript">

    function loadFile(event) {
      var input = event.target.files[0];
      console.log(input)
      google.script.run.fileToCsv(input);
    }


    function printout(array){
      console.log("Try")
     var spot = document.getElementById('textStuff');
     spot.innerHTML = array;
     }

     </script>`

气体在这里

function fileToCsv(myFile){
  var strData = myFile.getBlob().getDataAsString();
  Logger.log(strData);
   return strData;
  //return CSVToArray( strData )

}

【问题讨论】:

标签: csv google-apps-script


【解决方案1】:

您需要将整个表单对象传递给 code.gs 文件。参考以下代码。

HTML

<!DOCTYPE html>
    <html>
    <head>
      <base target="_top">
    </head>
    <body>
      <form id="testForm">
        <input type="text" id="itemHolder" name="itemHolder" style="display:none"/>
        <input type="file" id="myFile" name="myFile" onchange="loadFile(event)" accept=".csv"/>
        <p id="textStuff"></p>
      </form>
    </body>
    </html>


    <script type="text/javascript">

    function loadFile(event) {
      var inputData = event
      google.script.run.withSuccessHandler(printout).fileToCsv(document.getElementById("testForm"));
    }


    function printout(array){
      var spot = document.getElementById('textStuff');
      spot.innerHTML = array;
     }

     </script>

代码.gs

function fileToCsv(form){
  var fileData = form.myFile
  return fileData.getBlob().getDataAsString()
}

【讨论】:

  • 成功了,谢谢!
  • 随着最近对 chrome v8 引擎的更改,它不再工作了。
猜你喜欢
  • 1970-01-01
  • 2020-02-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-12
  • 2016-07-07
  • 2014-03-06
  • 2016-03-30
相关资源
最近更新 更多