2016-07-15 22 views
1

私はGoogleスクリプトで非常に単純なフォームを構築しました。ファイルアップロード機能は機能しています:Googleドライブにファイルをアップロードします。フォーム情報(名前、組織、コンテンツタイプ)を取得してスプレッドシートに保存し、Googleドライブにアップロードする方法を理解できません。Google ScriptフォームのデータをGoogleドライブにエクスポートするにはどうすればよいですか?

フォームデータ(テキストフィールド)をドライブにアップロードするにはどうすればよいですか?

!! UPDATE 7/19 !! コードがスプレッドシートアプリケーションコードで更新されました。改善されたHTML。 CSSはこの問題には関係しないと私は考えていません。

!! UPDATE 7/20! コードが機能しています。完全な機能を反映するように更新されました。援助のためにサンディーに感謝します。

<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Montserrat:400"> 
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css"> 

<div id="main"> 
<div class="form"> 
    <form id='myForm'> 
     <div class="header"> 
     <h1>Information Submission Form</h1> 
     <h2>Center For Alternative Fuels</h2> 
     </div> 

     <div class="row"> 
     <div class="col-md-6"> 
     <input id='name' type="text" name="name" placeholder="Full name" class="full item" spellcheck="false"> 
     </div> 

     <div class="col-md-6"> 
     <input id='email' type="text" name="email" placeholder="Email" class="full item" spellcheck="false"> 
     </div> 
    </div> 

    <div class="row indent item"> 
     <input id='organization' type="text" name="organization" placeholder="Organization" class="full" spellcheck="false"> 
    </div> 

    <div class="row indent item"> 
     <textarea id='type' name="type" class="full" placeholder="What are you submitting? (Presentation, Educational Content,...)" rows='2'></textarea> 
    </div> 

    <div id='success'> 
    </div> 


    <div class="row indent item"> 
     <textarea id='info' name="info" class="full" placeholder="Describe the content you are submitting" rows='8'></textarea> 
    </div> 


    <input type="file" name="myFile"> 
    <input type="submit" value="Submit" 
     onclick="this.value='Uploading..'; 
      google.script.run.withSuccessHandler(fileUploaded) 
      .uploadFiles(this.parentNode); 
      return false;" style="margin-top: 20px"> 
    </form> 
</div> 
</div> 

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

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

form.html server.gs

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

var url; 

function uploadToSheet(form){ 

var fullName, emailAdd, organization, fileType, fileInfo; 

var ss = SpreadsheetApp.openById("INSERT SHEET ID HERE"); 

var dataArray = []; 

fullName = form.name; 
emailAdd = form.email; 
organization = form.organization; 
fileType = form.type; 
fileInfo = form.info; 

dataArray.push(fullName); 
dataArray.push(emailAdd); 
dataArray.push(organization); 
dataArray.push(fileType); 
dataArray.push(fileInfo); 

ss.appendRow('dataArray'); 

} 

function uploadFiles(form) { 

try { 

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

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

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

    return "File uploaded successfully " + file.getUrl(); 
} 

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

フォームデータ(テキストフィールド)の可能性テキストファイルに入れられ、テキストfi Googleドライブにファイルを保存しました。また、フォームデータの各セットをスプレッドシートの行に保存することもできます。または、アップロードしたファイルにデータをメタデータとして添付して保存するかどうかを指定します。 –

+0

私はデータをスプレッドシートに保存したいと思っています...元の投稿にその詳細を含めたと思いました:)ありがとう! – thisFunkinGuy

+0

あなたは 'SpreadsheetApp'サービスを使う必要があります。私は 'doPost()'関数が起動されているとは思わないので、必要はありません。 'Logger.log()'ステートメントで渡されるデータをチェックする必要があります。 'Logger.log( 'name:' + form.myName)'あなたはおそらく 'appendRow()' [Apps Script documentation](https://developers.google.com/apps-script/reference/)を使いたいでしょう。スプレッドシート/シート#appendRow(オブジェクト)) –

答えて

0

のコードは次のようになります。

var dataArray,org,ss,userName; 

ss = SpreadsheetApp.openById("spreadsheet_File_ID"); 
dataArray = []; 

userName = form.myName; 
org = form.myOrganization; 

dataArray.push(userName); 
dataArray.push(org); 

ss.appendRow(dataArray); 
+0

私の更新されたコードをチェックしてください。私は "TypeErrorを受け取っています:" appendRow "nullのメソッドを呼び出すことができません。 – thisFunkinGuy

+0

スプレッドシートオブジェクトがnullです。アクティブなスプレッドシートを取得しようとしていますが、開いていない可能性があります。スプレッドシートをIDで開く必要があるかもしれません。 –

+0

スプレッドシートを開くためにどの機能を使用すべきかについての洞察はありますか? – thisFunkinGuy

関連する問題