2017-07-29 8 views
1

古いデータを削除するためにGoogleフォームからデータを収集するシートが必要です。このスクリプトはシートにありますが、新しいデータがフォームに追加されたときには実行されないようです。Googleフォームで古いデータ行を削除する

function onEdit(e) { 
var ss = SpreadsheetApp.getActiveSpreadsheet(); 
var sheet = ss.getSheetByName("1054"); 
var datarange = sheet.getDataRange(); 
var lastrow = datarange.getLastRow(); 
var values = datarange.getValues();// get all data in a 2D array 

var currentDate = new Date(); 
var oneweekago = new Date(); 
oneweekago.setDate(currentDate.getDate() - 7); 

for (i=lastrow;i>=2;i--) { 
var tempdate = values[i-1][0]; 

if(tempdate < oneweekago) 
{ 
    sheet.deleteRow(i); 
} 

と呼ばれるためにリンクされているシート私はフォームにappscript配置する必要がありますか?もしそうなら、それは何でしょうか?

+0

"インストールする"と "フォーム送信時に"トリガーする必要があります。 'onEdit(e)'の名前を変更してください。 'onEdit()'は "予約された"関数名です。 "On Form Submit"トリガに予約された関数名を使用しないでください。それにあなた自身の一意の名前をつけてください。次に、コードエディタで[編集]メニューをクリックし、[現在のプロジェクトのトリガ]をクリックしてトリガを追加します。 –

+0

私はシートにスクリプトを実行するフォームにスクリプトを置く必要がありますか?それ、どうやったら出来るの? –

+0

フォームのスプレッドシートまたはその両方に "フォーム提出時"トリガを追加できます。 「On Form Submit」トリガーをスプレッドシートに追加する方が簡単です。データを取得する方が簡単です。コードをスプレッドシートに適用する場合は、より直接的な関係になります。コードエディタで「ヘルプ」を選択し、次に「ドキュメント」を選択します。単語「イベントオブジェクト」を検索します。 –

答えて

2

シートやフォームをそのままにしておく方が良いと思います。私のウェブサイトにあるフォームで私がしていることは次のとおりです。

function formSubmitEvent(e) 
{ 
    var ss=SpreadsheetApp.openById('SpreadsheetID'); 
    var sht=ss.getSheetByName('ResponseReview');//this is another sheet I used for reviewing the responses. 
    sht.appendRow(e.values);//I append a row to the ResponseReview sheet 
    selfEmail(e.values);//and I send myself an email if my quota is above 75 
} 

リンクしたシートの上に古いデータを削除しても、フォームは明らかに、それは次の行が何であるかを追跡しますので、それが中断したデータを追加していきます。

一般に、リンクされたシートだけを残します。 Googgle Apps Scriptで自分のフォームを作成したのは事実です。何度も回答が得られたら、フォームのリンクを解除してその両方を削除し、そのスクリプトを実行してフォームを再構築し、新しいフォームとシートをリンクします私は、提出されたデータからGoogle Docを作成する機能を持っている他のシートでレビュープロセスを継続します。本質的には、onFormSubmitトリガーを取得し、値配列からResponseReviewシートを挿入するため、フォームがどこにデータを置くかは私にとっては重要ではありません。そして、私は、リンクに影響を与えずに、そのシートを使って何でもすることができます。

関連する問題