2016-06-11 13 views
0

私は、Googleスクリプトの世界で初めてです。 iファイルをGoogleドライブにアップロードします。 ii Googleシートに新しい行を追加します。HTML形式のファイルをGoogleドライブにアップロードしてGoogleシートにURLを保存する

基本的には、いくつかのテキストフィールドと添付ファイルを収集する基本的なHTMLフォームを作成しようとしています。添付ファイルがGoogleドライブにアップロードされ、URLが他のフォームテキストフィールドとともにGoogleシート。ここで

は、私は(私が見つけたのチュートリアルに基づいて)で働いているHTMLフォームです:

<!-- Include the Google CSS package --> 
<link rel="stylesheet" href="https://ssl.gstatic.com/docs/script/css/add-ons.css"> 

<!-- You can also include your own CSS styles --> 
<style> 
    form { margin: 40px auto; } 
    input { display:inline-block; margin: 20px; } 
</style> 

<script> 

    // The function will be called after the form is submitted 
    function uploadFile() { 
    document.getElementById('uploadFile').value = "Uploading File.."; 
    google.script.run 
     .withSuccessHandler(fileUploaded) 
     .uploadFiles(document.getElementById("labnol")); 
    return false; 
    } 

    // This function will be called after the Google Script has executed 
    function fileUploaded(status) { 
    document.getElementById('labnol').style.display = 'none'; 
    document.getElementById('output').innerHTML = status; 
    } 

</script> 

<!-- This is the HTML form --> 
<form id="labnol"> 

    <!-- Text input fields --> 
    <input type="text" id="nameField" name="myName" placeholder="Your name.."> 
    <input type="email" id="emailField" name="myEmail" placeholder="Your email.."> 

    <!-- File input filed --> 
    <input type="file" name="myFile"> 

    <!-- The submit button. It calls the server side function uploadfiles() on click --> 
    <input type="submit" id="uploadFile" value="Upload File" 
     onclick="this.value='Uploading..';uploadFile();"> 

</form> 

<!-- Here the results of the form submission will be displayed --> 
<div id="output"></div> 

そしてここでは、Googleのスクリプトです(再び、ブログ上で便利なチュートリアルに基づいて)

/* The script is deployed as a web app and renders the form */ 
function doGet(e) { 
    return HtmlService.createHtmlOutputFromFile('form.html') 
      .setSandboxMode(HtmlService.SandboxMode.NATIVE); 
    // This is important as file upload fail in IFRAME Sandbox mode. 
} 

/* This function will process the submitted form */ 
function uploadFiles(form) { 

    try { 

    /* Name of the Drive folder where the files should be saved */ 
    var dropbox = "Test Form Submissions"; 
    var folder, folders = DriveApp.getFoldersByName(dropbox); 

    /* Find the folder, create if the folder does not exist */ 
    if (folders.hasNext()) { 
     folder = folders.next(); 
    } else { 
     folder = DriveApp.createFolder(dropbox); 
    } 

    /* Get the file uploaded though the form as a blob */ 
    var blob = form.myFile; 
    var file = folder.createFile(blob); 

    //Allocate variables for submissions in sheet 
    var namerecord = form.myName; 
    var emailrecord = form.myEmail; 

    /* Set the file description as the name of the uploader */ 
    file.setDescription("Uploaded by " + form.myName); 

    /* Return the download URL of the file once its on Google Drive */ 
    return "File uploaded successfully " + file.getUrl(); 

    var uploadURL = file.getUrl(); 


    // 

    } catch (error) { 

    /* If there's an error, show the error message */ 
    return error.toString(); 
    } 

     //Open spreadsheet based on URL 
    var googsheet = SpreadsheetApp.openByUrl('https://docs.google.com/spreadsheets/d/17fuu1vUuxgCgs1TpSGpWDNxMHX3AEFscmjX156HQ5_U/edit?usp=sharing'); 
    Logger.log(googsheet.getName()); 

    var sheet = googsheet.getSheets()[0]; 
    sheet.appendRow(["James", "jim", "abc"]); 



} 

私の直感は、指定されたシートにフォームデータを追加するために、いくつかのコード行をスリップするだけだったが、それは働いていないと私は何か間違ったことをやっている必要があります。S

何かアドバイスのGreAだろう私は同じ問題を抱えていたし、このリンクで自分の問題を解決/

おかげ

+0

あなたは、トラブルシューティングを習得する必要があります技術。 [Googleドキュメント - トラブルシューティング](https://docs.google.com/document/d/14BjSnTnzj7w9LV5id4Hc2z3jOYkH2hZduwLDxcYssWo/edit)基本的にコードレビューをリクエストしていますが、特定のエラーや問題の解決には役立ちません。 –

答えて

-1

を::

このアップロードファイルのためのGoogleのスクリプト例から更新TLY Webプログラミングへの新たな無知なビジネスアナリストに感謝Googleシートとマクロを使用します。送信ボタンを定義するHTMLに一列に

  1. id="uploadFileButton"からid="uploadFile"が(おそらく送信ボタンのIDと機能との間の衝突があったuploadFile())変更

  2. またonclickのを変更します余分なリターン偽を追加することでトリガー: onclick="this.value='Uploading..';uploadFile();return false;"

  3. に対応し、uploadFile()関数を定義するコードでは、

    を変更
    document.getElementById('uploadFile').value = "Uploading File.."; 
    

    document.getElementById('uploadFileButton').value = "Uploading File.."; 
    

スレッドのリンク:ベネズエラからhttps://code.google.com/p/google-apps-script-issues/issues/detail?id=6177

よろしく

注:私の悪い英語のため申し訳ありません

関連する問題