0

Google ドキュメントのフォームを使用しています。エントリごとに列の自動増加を形成するスクリプトと、現在のエントリに同様のエントリがあるかどうかを確認する別の関数があります。コードを以下に示します。

function onFormSubmit(e) {
var sheet = SpreadsheetApp.getActiveSheet();
var row =  SpreadsheetApp.getActiveSheet().getLastRow();
sheet.getRange(row,7).setValue('sn'+(row-1));
}

function removeDuplicates() {
var sheet = SpreadsheetApp.getActiveSheet();
var data = sheet.getDataRange().getValues();
var newData = new Array();
for(i in data){
var row = data[i];
var duplicate = false;
for(j in newData){
if(row[1] == newData[j][1] && row[2] == newData[j][2]){
duplicate = true;
}
}
if(!duplicate){
newData.push(row);
formSubmitReply();
}

}
sheet.clearContents();
sheet.getRange(1, 1, newData.length, newData[0].length).setValues(newData);
}

ご覧のとおり、最初の関数は列を自動増加するためのもので、2番目の関数は重複したエントリをチェックするためのものです。私はそれらを別の方法でトリガーすることができますが、私がやりたいのは、2番目の関数でも1番目の関数を呼び出して、フォームを送信する2番目の関数をトリガーしながら、その中で1番目の関数を自動的に実行することです。どうやってやるの??

注: のような単純な呼び出しは機能onFormSubmit()しませんでした。

4

1 に答える 1

2

複数の場所から実行するコードを抽出します。これを行う代わりに:

function eventHandler(e) {
   // code to increase column
}

function otherFunction() {
   // code to remove duplicates
   eventHandler(e);   // won't work, e is undefined!
}

あなたはこれを行うことができます:

function tinyHelperFunction() {
  // code to increase column
}

function eventHandler(e) {
  tinyHelperFunction();
  // other stuff, maybe
}

function otherFunction() {
  // code to remove duplicates
  tinyHelperFunction();
}
于 2012-09-12T18:48:31.360 に答える