9

Googleドライブにファイルをアップロードするにはどうすればよいですか? Google アプリ スクリプト - htmlservice を使用して Web アプリを作成したいと考えています。HTML のフォームを既存の Google アプリ スクリプトにポイントする方法がわかりません。Google ドキュメントで適切な例を見つけるのに苦労しています。

UI を使用した例を何百も見つけましたが、https://developers.google.com/apps-script/sunsetによると、すぐに廃止される予定です。前もって感謝します!ヤヌス

<html>
<body>
<form>
   <input type="file"/>
   <input type="button">
</form>
</body>
</html>

脚本

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

function fileUploadTest()
{
   var fileBlob = e.parameter.upload;
      var adoc = DocsList.createFile(fileBlob);
      return adoc.getUrl();
}
4

3 に答える 3

15

ボタンで google.script.run を使用してサーバー側関数を実行し、フォーム全体を唯一のパラメーターとして渡します。(ボタンの onClick 内では、'this' がボタンなので、'this.parentNode' がフォームです。) 入力ファイルに名前を付けてください。

<html>
<body>
<form>
   <input type="file" name="theFile">
   <input type="hidden" name="anExample">
   <input type="button" onclick="google.script.run.serverFunc(this.parentNode)">
</form>
</body>
</html>

サーバー上で、フォーム処理関数に 1 つのパラメーター (フォーム自体) を取らせます。クライアント コードからの HTML フォームは、ブロブになるファイルを除いて、すべての名前付きフィールドが文字列プロパティである同等の JavaScript オブジェクトに変換されます。

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

function serverFunc(theForm) {
   var anExampleText = theForm.anExample;  // This is a string
   var fileBlob = theForm.theFile;         // This is a Blob.
   var adoc = DocsList.createFile(fileBlob);    
   return adoc.getUrl();
}

生成して返す URL を実際に使用したい場合は、必ず google.script 呼び出しに成功ハンドラーを追加してください。次のように変更できます。

// Defined somewhere before the form
function handler(url) {
  // Do something with the url.
}

<input type="button" onclick=
  "google.script.run.withSuccessHandler(handler).serverFunc(this.parentNode)">
于 2013-04-03T14:51:52.293 に答える
0

私は自分の質問に対する答えを見つけました。

Google App Script の HtmlService を使用してフォームを送信する

以下の Google App Script リンクのコードは次のとおりです。

function doGet(e) {
  var template = HtmlService.createTemplateFromFile('Form.html');
  template.action = ScriptApp.getService().getUrl();
  return template.evaluate();
}

function doPost(e) {
  var template = HtmlService.createTemplateFromFile('Thanks.html');
  template.name = e.parameter.name;
  template.comment = e.parameter.comment;
  template.screenshot = e.parameter.screenshot;
  return template.evaluate();
}

https://script.google.com/d/1i65oG_ymE1lreHtB6WBGaPHi3oLD_-wPd5Ter1nsN7maFAWgUA9DbE4C/edit

ありがとう!

于 2013-03-28T15:15:03.180 に答える
0

試してください: return HtmlService.createTemplateFromFile('myPage').evaluate(); 詳細: html サービス リファレンス

于 2013-03-28T12:37:02.750 に答える