2017-02-02 53 views
1

私はhttpフォームからGoogle AppsスクリプトWebアプリケーションに画像を投稿し、その画像をGoogleドライブに追加します。jpgまたはpngをgoogleアプリスクリプトのblobに変換するにはどうすればよいですか?

my appsのスクリプトは以下のとおりです。

function doPost(e){ 
    var date = new Date(); 
    var timestamp = date.toString() 
    var adress = e.parameter.adress; 
    var cost = e.parameter.cost; 
    var item = e.parameter.item; 
    var check = e.parameter.image; 

    //add file to drive 
    var destination_id = "some ID" 
    var destination = DriveApp.getFolderById(destination_id); 
    destination.createFile(check); 
}; 

実行するとエラーが返されます。 cannot find method: createFile(String)

「チェック」が文字列であり、送信した画像をBlobに変換したいからです。 どうすればいいですか?

+0

この投稿はGASに画像をアップロードする方法を説明しています:[GAS-upload-image](http://stackoverflow.com/questions/21593249/uploading-images-to-a-google-spreadsheet-using-apps-スクリプト) –

答えて

2

次のサンプルはどうですか? "getAs()"を追加しました。 https://developers.google.com/apps-script/reference/drive/file#getAs(String)

これは私がこのテストに使用した非常に単純なHTMLとガススクリプトです。

HTML:このファイル名は "form.html"です。

<form> 
    <input type="file" name="imageFile"> 
    <input type="button" value="ok" onclick="google.script.run.upload(this.parentNode)"> 
</form> 

ガススクリプト:このサンプルスクリプトについては

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

function upload(e) { 
    var destination_id = "some ID"; 
    var img = e.imageFile; 
    var contentType = "image/jpeg"; 
    var destination = DriveApp.getFolderById(destination_id); 
    var img = img.getAs(contentType); 
    destination.createFile(img); 
} 

あなたはJPEGファイルとして保存したい場合は、 '画像/ JPEG' から '画像/ PNG' から 'のcontentType' を変更してください。 'image/jpeg'のcontentTypeにpngファイルをアップロードすると、pngファイルは 'getAs()'によってjpegファイルに変換されます。

+0

助けてくれてありがとう。しかし、あなたのコードを実行すると、エラーが発生しました:Object submitted_image.pngの関数getAsが見つかりません。私は "タイプチェック"を見て、それは "文字列"でした。私はこれが問題だと思う。 – Katshun0307

+0

GoogleドライブでGoogle Appsスクリプトとして使用しましたか?あなたがした場合は、リクエスト方法について聞かせてもらえますか?この "doPost"にどうやってリクエストしますか?私は、リクエストメソッドによって得られたファイルデータにエラーの問題があると思います。なぜなら私は "getAs()"を使って投稿リクエストをテストするので、うまく動作するからです。 – Tanaike

+0

<スクリプトタイプ= "テキスト/ javascriptの"> \t \t機能{)( \t \t \tのdocument.getElementById( "フォームID")を提出(サブミット)。 \t \t} \t \t <フォームID = "フォームID" ACTION = "https://script.google.com/macros/s/hogehoge/exec" METHOD = "POST" ターゲット= "fake_target"> \t // inputs // \t – Katshun0307

関連する問題