2017-08-15 1 views
0

こんにちは私は、フォームからデータを受け取るワークシートからデータを取り込むスクリプトを作って、オペレーターの決定に応じてメインカレンダーにイベントを作成しています。オペレーターの決定に応じてカレンダーにスプレッドシート

列AからFのフォームからデータを受け取ります。列Gでは、オペレータは「はい」または「いいえ」のいずれかを決定します。

Gが "Yes"の場合、スクリプトは何かが書かれている場合、列Hをチェックします。空である場合 スクリプトはH列に書き込み、A:F、 のデータを持つイベントを作成します。何もH列に書き込まれていない場合は、最後の文字が書き込まれるまで次の行に渡されます。

私のスクリプトは、H列全体が空の場合にのみ正しく動作します。これにより、私は常に列Hをクリアし、カレンダーにすでに書き込まれているイベントを新しいエントリごとに重複させます。

H列をクリアすることなくスクリプトを実行し続けるにはどうすればよいですか?

私のスクリプトは次のとおりです。

function teste() { 
var ss = SpreadsheetApp.getActive(); 
var dados = ss.getDataRange().getValues(); 
var ultimaLinha = ss.getLastRow() - 1; 
var options = { 
    description: dados[ultimaLinha][2], 
    location: dados[ultimaLinha][5], 
}; 
for (var i = 1; i < ultimaLinha + 1; i++) { 
    var validacao = dados[i][6]; 
    var escrita = dados[i][7]; 
    if (validacao === "Yes") { 
     if (escrita == null) { 
      SpreadsheetApp.getActiveSheet().getRange(i + 1, 8).setValue('ok'); 
      var event = CalendarApp.getDefaultCalendar().createEvent(
       dados[i][1], 
       new Date(dados[i][3]), 
       new Date(dados[i][4]), 
       options); 
     } 
    } 
} 

マイワークシート私が正しくあなたの概要を理解していれば

enter image description here

答えて

0

あなたはgetValues()データ配列内の空のセルがまだ存在し、彼らはちょうど空の文字列が含まれています。私はその行を削除すると、スクリプトがすでに以前に処理されたイベントのために重複イベントを作成しnull

if (escrita == "") { 
... 
} 
0

、私はあなたが次のチェックを削除する必要があると思います。

if (escrita == null) { 
+0

""に変更します –

関連する問題