1

私は以下のスクリプトを書いたので、自動的に新しい行が挿入され、その新しい行に式がコピーされます。Googleシート - 指定列/データ検証の最初の編集後に新しい行を追加する

私は、この機能を実行するには、列2または4に変更が加えられた場合にのみ実行するように指定しましたが、列番号に関係なく、またはe.oldValue ===未定義であるかどうかに関係なく実行されます。

つの質問:

1)それは列の数とデータの検証を無視しているというのが私のコードで間違って何をしているのですか?

2)セルに値が与えられて消去された場合、そのセルは未定義に戻るか、その値は現在 ""ですか? https://docs.google.com/spreadsheets/d/1m58J7vg_xfkrxK_9pxPSHAlBYULXbqNIiF8H2-KVBgE/edit#gid=1496977189

コード:

function onEdit(e) { 

    var sheet = SpreadsheetApp.getActiveSheet(); 
    var activeCell = sheet.getActiveCell(); 
    var activeColumn = activeCell.getColumn(); 
    var walkoutRange = sheet.getRange(7, 17, 1); 
    var walkoutFormula = walkoutRange.getFormulas(); 
    Logger.log(walkoutFormula); 
    var newRange = sheet.getRange((activeCell.getRow() + 1), 17, 1) 

    if (sheet.getName() != "Form") { 

    if (activeColumn === 2 || 4) { 

     if (e.oldValue === undefined) { 

     sheet.insertRowAfter(activeCell.getRow()); 
     newRange.setFormula(walkoutFormula); 
     } 
    } 
    } 
}; 

答えて

0

次の行でキャッチされないエラーがあります:

if (activeColumn === 2 || 4) { 

は次のようになります。

if (activeColumn === 2 || activeColumn === 4) { 
ここ

は、シートへのリンクです

条件テスト:

activeColumn === 2 || 4 

常にtrueを返しています。

function test() { 
    var activeColumn = 9; 
    Logger.log('is it true: ' + Boolean(activeColumn === 2 || 4))//returns true 

    if (activeColumn === 2 || 4) { 
    Logger.log(Boolean(activeColumn === 2 || 4)) 
    }; 

}; 
+0

ありがとうございました! – thehamburglar

関連する問題