0

学生が入力するフォームを作成しています。メールアドレスを自動入力したいのですが、その方法がわかりません。私は次のことを考え出しましたが、私はこれに非常に慣れていないため、かなりずれている可能性があります。実装方法がわからず、null 応答が返されます。email というフォームの質問が必要ですか? ユーザーの電子メールを非表示にして記録するにはどうすればよいですか?

function formEnterEmail(e) {
  var userEmail = Session.getActiveUser().getEmail();
  var sheet = SpreadsheetApp.getActiveSheet();
  var lastRow = sheet.getLastRow();
  // Set the status of the new ticket to 'New'.
  // Column F is the Status column
  sheet.getRange(lastRow, getColIndexByName("Email")).setValue(userEmail);

function getColIndexByName(colName) {
  var sheet = SpreadsheetApp.getActiveSheet();
  var numColumns = sheet.getLastColumn();
  var row = sheet.getRange(1, 1, 1, numColumns).getValues();
  for (i in row[0]) {
    var name = row[0][i];
    if (name == colName) {
      return parseInt(i) + 1;
    }
  }
  return -1;
}
}
4

2 に答える 2

0

Google フォームでユーザーのメール アドレスを収集できるのは、Google Apps for Business または Google Apps for Education を使用している場合のみで、ドメイン内のユーザーからのみ収集できます。これらの要件を満たしていない場合、唯一の選択肢は、ユーザーに情報を入力するように要求するか、事前に入力されたフォームへの URL を電子メールで送信することです。

ライブ フォームはユーザー ID が収集されていることを報告するため、これは実際には「非表示」ではありません。

スクリプトからフォームを作成している場合は、Form.setCollectEmail(true)を使用して電子メール コレクション機能を制御できます。ただし、コードを使用せずにこれを設定することもできます。

フォーム エディターで、「フォーム設定」を探します。すべての質問の上に表示する必要があります。ドメイン ログインとユーザー名の収集を要求するチェック ボックスを設定します。

スクリーンショット

回答を収集するスプレッドシートには、「ユーザー名」列が自動的に含まれます。

別のスクリーンショット

于 2013-08-20T20:57:51.177 に答える