0

onEdit(e)Google Apps Scriptを使用していますが、スプレッドシートフォーム送信を使用するときにメソッドのトラブルシューティングを行う方法がわかりません。

コードは非常に単純です。フォームデータのパラメータをチェックして、それを削除するか、誰かにメールを送信するだけです。

function onEdit(e) {
  var namedRange = e.namedValues;
  if (namedRange.SOME_VALUE < 3.3) {
    SpreadsheetApp.getActiveSheet().deleteRow(sheet.getLastRow());
  } else {
    MailApp.sendEmail("none@none.na", "New Entry", e.values);
  }
};
4

3 に答える 3

1

スクリプトを起動するには、インストール可能な「on form submit」トリガーを使用し、関数にonEditとは異なる名前を付ける必要があります(したがって、単純な「onedit」トリガーも起動されません)。

インストール可能なトリガーによって起動される関数を使用すると、Logger.log()を使用してログに書き込むことができます(たとえば、Logger.log(namedRange.SOME_VALUE)後でログを呼び出して監視することができます)。余談ですが、「フォーム送信時」に使用できる単純なトリガーがあったとしても、Logger.logが実際にそのような機能で機能するとは思いません。

于 2012-09-26T06:57:13.733 に答える
0

onEdit関数は、誰かがスプレッドシートを手動で編集したときにトリガーされます。送信トリガーの場合は、onSubmit()関数を使用します

于 2012-09-26T03:21:33.680 に答える
0

これは、フォーム送信トリガー関数をテストできる関数です。GASでトリガー関数をテストするにはどうすればよいですか?

function test_onFormSubmit() {
  var dataRange = SpreadsheetApp.getActiveSheet().getDataRange()
  var data = dataRange.getValues();
  var headers = data[0];
  // Start at row 1, skipping headers in row 0
  for (var row=1; row < data.length; row++) {
    var e = {};
    e.values = data[row];
    e.range = dataRange.offset(row,0,1,data[0].length);
    e.namedValues = {};
    // Loop through headers to create namedValues object
    for (var col=0; col<headers.length; col++) {
      e.namedValues[headers[col]] = e.values[col];
    }
    // Pass the simulated event to onFormSubmit
    onFormSubmit(e);
  }
}
于 2013-08-26T16:45:27.540 に答える