使用谷歌应用脚​​本

时间:2015-05-15 18:55:29

标签: php html5 forms dom google-apps-script

我正在尝试使用谷歌应用脚​​本使用表单和图片上传器。我希望可以选择动态增加使用按钮上传的图像数量,然后将其上传到我的驱动器。我能够添加更多文件输入,但如果我有多个图像,似乎无法上传文件。我注释掉了for循环,并且仅使用两个图像作为示例。 if / else语句起作用,但不上传图像。我相对较新的编程和谷歌应用程序脚本的新手。任何帮助将非常感激。谢谢!

form.html:

    <form id="myForm">
      <p>Name</p>
      <input type="text" name="PosterName">
      <p>Email</p>
      <input type="text" name="email">
      <p>What are you selling/renting?</p>
      <table>
        <tr>
          <td><input type="radio" name="sell" value="apt" id="apt"></td>
          <td><label for="apt">Apartment</label></td>
        </tr>
        <tr>
          <td><input type="radio" name="sell" value="furn" id="furn"></td>
          <td><label for="furn">Furniture</label></td>
        </tr>
        <tr>
          <td><input type="radio" name="sell" value="books" id="books"></td>
          <td><label for="books">Books</label></td>
        </tr>
        <tr>
          <td><input type="radio" name="sell" value="other" id="other"></td>
          <td><label for="other">Other</label></td>
        </tr>
      </table>
      <p>Give a description</p>
      <textarea name="desc" rows="10" cols="50"></textarea>

      <table id="submittable">
        <tr>
          <td><input type="file" name="myFile1"></td>       
          <td><button onclick="addmore();" id="D">Add More</button></td>
        </tr>
      </table>
      <input type="submit" value="Upload File" 
              onclick="this.value='Uploading...';
                      google.script.run.withSuccessHandler(fileUploaded)
                      .uploadFiles(this.parentNode);
                      return false;">
      <input type="text" id="test" name="appt">;
    </form>

    <div id="output"></div>

    <script>
      function addmore() {
        var tname = document.getElementById('submittable');
        var row = tname.insertRow(-1);
        var cell1 = row.insertCell(0);
        var cell2 = row.insertCell(1);
        var numrows = tname.rows.length;
        cell1.id = "A";
        cell2.id = "B";
        var place1 = document.getElementById("A");
        var place2 = document.getElementById("B");
        var fle = document.createElement("input");
        var add = document.createElement("button");
        add.setAttribute("onclick", "addmore()");
        var x = document.getElementById('test');
        x.setAttribute("value", numrows);
        fle.setAttribute("type", "file");
        fle.setAttribute("name", "myFile" + numrows);
        var y = fle.getAttribute("name");
        add.innerHTML = y;
        place1.appendChild(fle);
        place2.appendChild(add);
        cell1.id = "C";
        cell2.id = "D";
        var place3 = document.getElementById("D");
        place3.parentNode.removeChild(place3);
      }
    </script>

    <script>
        function fileUploaded(status) {
            document.getElementById('myForm').style.display = 'none';
            document.getElementById('output').innerHTML = status;
        }
    </script>

    <style>
     input { display:block; margin: 20px; }
    </style>

code.gs:

    function doGet(e) {
      return HtmlService.createHtmlOutputFromFile('form.html');
    }

    function uploadFiles(form) {

      try {

        var dropbox = "shukimages";
        var folder, folders = DriveApp.getFoldersByName(dropbox);

        if (folders.hasNext()) {
          folder = folders.next();
        } else {
          folder = DriveApp.createFolder(dropbox);
        }

        var spreadsheet = DriveApp.getFilesByName(dropbox);
        var ss = SpreadsheetApp.openById("1O4GM0DT5kqu5MNLcYFZe_vrI2KK1lmO9s5XviHWsMEg");
        var sheet = ss.getSheets()[0];
        sheet.appendRow([form.PosterName, form.email, form.sell, form.desc]);
        //return "Files uploaded successfully";
        var nums = form.appt;
        if (nums < 1) {
          var blob = form.myFile1;    
          var file = folder.createFile(blob);
          return "File uploaded successfully";
        } else {
          return "Files uploaded successfully";
          //for (i = 1; i <= nums; i++) {
          var blob = form.myFile2;    
          var file = folder.createFile(blob);              
        //}
        }

      } catch (error) {
         return error.toString();
        }
      }

编辑:

再澄清一点;如果我只尝试上传一张图片,它可以正常运行并上传图片,但不会上传多张图片。

我在哪里获得createFile: https://developers.google.com/apps-script/reference/drive/drive-app

0 个答案:

没有答案