带有上传的Google Script Form,如何连接到电子表格

时间:2014-09-25 22:13:40

标签: forms upload google-apps-script spreadsheet

以下脚本允许我将文件上传到Google云端硬盘但是我似乎无法在“名称”和“日期”中输入数据以输入电子表格。

任何人都可以帮我创建或链接电子表格以填充数据。

由于

code.gs

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

function uploadFiles(form) {

  try {

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

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

    var blob = form.myFile;    
    var file = folders.createFile(blob);  
    file.setDescription("Uploaded by "+ form.myName);

    return "File uploaded successfully ";

  } catch (error) {

    return error.toString();
  }

}

form.html

<form id="myForm">
    <input type="text" name="myName" placeholder="Your name.">
    <input type="text" name="myDate" placeholder="Date.">
    <input type="file" name="myFile">
    <input type="submit" value="Upload File" 
           onclick="this.value='Uploading..';
                    google.script.run.withSuccessHandler(fileUploaded)
                    .uploadFiles(this.parentNode);
                    return false;">
</form>

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

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

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

1 个答案:

答案 0 :(得分:0)

您需要使用电子表格服务

Google Documentation - Apps Script Spreadsheet Service

您可以使用追加行:

Append Rows

var ss = SpreadsheetApp.getActiveSpreadsheet();
 var sheet = ss.getSheets()[0];

 // Appends a new row with 2 columns to the bottom of the
 // spreadsheet containing the values in the array
 sheet.appendRow(["Jackson Jones", "jJones@email.com"]);

上面的示例使用getActiveSpreadsheet()方法。你不会使用它。您需要对该文件的引用。

您可以按ID或网址打开电子表格文件。

Google Documentation - Open a Spreadsheet by ID

// The code below opens a spreadsheet using its ID and logs the name for it.
 // Note that the spreadsheet is NOT physically opened on the client side.
 // It is opened on the server only (for modification by the script).
 var ss = SpreadsheetApp.openById("abc1234567");
 Logger.log(ss.getName());

请注意Logger.log()声明。要查看日志,请使用Apps脚本代码编辑器中的查看菜单。

理解,SpreadsheetApp.openById()返回 CLASS 至关重要。它返回 SPREADSHEET CLASS

Google Documentation - Spreadsheet Class

获得电子表格类后,您可以采取下一步并使用电子表格类可用的方法。

var ss = SpreadsheetApp.openById("abc1234567");
Logger.log(ss.getName());
ss.appendRow(["Jackson Jones", "jJones@email.com"]);

在上面的示例中,数据是硬编码的,但您需要变量而不是双引号中的常量值。

因此,您需要从表单对象,变量或直接引用中获取数据。

ss.appendRow([form.myName, "jJones@email.com"]);

我确实检查了您的代码,form.myName确实将我输入的名称返回到名称字段。