1

ユーザーが送信すると、Googleドライブの特定のスプレッドシートにデータを投稿するフォームを自分のサイトに作成したいと思います。Google App Scriptsでこれを行うにはどうすればよいですか?

サンプルフォーム

<form method='post' action='https://script.google.com/macros/s/xxxx.....'>
  Favorite Color <input type='text' value='' name='color' />
  Favorite Ice Cream Flavor <input type='text' value='' name='flavor' />
  <input type='button' value='submit' />
</form>

送信を押すと、Googleドライブスプレッドシートにレコードが作成されます。

| color | flavor |
   red    vanilla

これはGASで実行できますか、それとも(Javascriptを介して)GoogleドライブSDKに適したタスクですか?


アップデート

UIAppServiceにフォーム要素を追加する方法の例を使用してスクリプトを完成させました

これは私が一緒に投げた現在のスクリプトです...そしてそれは動作します!!!

var SPREADSHEET_ID = '0Aqa6DbU_0sv7dGNrMEEybjNrdm00MlpwTTNx...';

function doPost(e) {
  var app = UiApp.getActiveApplication();

  SpreadsheetApp.openById(SPREADSHEET_ID).getSheetByName('RequestInvites').appendRow([e.parameter.emailAddress, 'hash123']);

  app.add(app.createLabel("Form submitted. Your email address is: '" + e.parameter.emailAddress));

  return app;
}

function createForm(e){
   var app  = UiApp.createApplication();
   var form = app.createFormPanel();
   var flow = app.createFlowPanel();

   flow.add(app.createLabel('Enter your email address to get an invitation').setId('inviteLabel'));
   flow.add(app.createTextBox().setId('emailAddress').setName('emailAddress'));
   flow.add(app.createSubmitButton("Request Invite"));
   form.add(flow);

   app.add(form);
   return app;
}
4

1 に答える 1

2

あなたはGASでそれを行うことができます。スクリプトでfunction doPost(e)、送信ボタン(忘れている可能性があります;)が好まれたときにユーザー入力を取得するために使用します。

e.parameter.colordoPost関数では、:や。のような「name」属性を持つ入力にアクセスできますe.parameter.flavor

次に、スプ​​レッドシートサービスを使用してスプレッドシートに書き込むことができます。このサービスのドキュメントはこちらです。したがって、スプレッドシートを開いて、次のような正しいシートに行を追加しますSpreadsheetApp.openById('id of your spreadsheet').getSheetByName('colors_and_flavors').appendRow([e.parameter.color, e.parameter.flavor]);

要約しましょう:

function doPost(e) {
  SpreadsheetApp.openById('id of your spreadsheet').getSheetByName('colors_and_flavors').appendRow([e.parameter.color, e.parameter.flavor]);
}

それが役に立てば幸い !;)

于 2012-08-15T22:14:50.047 に答える