2016-12-07 12 views
-1

このスクリプトが見つかりました(下)。単純に列Gに数字の0を入力すると機能しますが、列Gの結果が列の値を引いた値E、Fのいずれかになります。値が0になると、シートの「デフォルト」のままになります。どんな助けもありがとう。私は式の結果に適用されたときに、これがどのように機能するかについて検索し、何も見つけていません。ありがとう!数式から値を取得するときにスクリプトが機能しない

function onEdit() { 
    // moves a row from a sheet to another when a magic value is entered in a column 
    // adjust the following variables to fit your needs 
    // see https://productforums.google.com/d/topic/docs/ehoCZjFPBao/discussion 

    var sheetNameToWatch = "default"; 

    var columnNumberToWatch = 7; // column A = 1, B = 2, etc. 
    var valueToWatch = 0; 
    var sheetNameToMoveTheRowTo = "toMoveTo"; 

    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var sheet = SpreadsheetApp.getActiveSheet(); 
    var range = sheet.getActiveCell(); 

    if (sheet.getName() == sheetNameToWatch && range.getColumn() == columnNumberToWatch && range.getValue() == valueToWatch) { 
    var targetSheet = ss.getSheetByName(sheetNameToMoveTheRowTo); 
    var targetRange = targetSheet.getRange(targetSheet.getLastRow() + 1, 1); 
    sheet.getRange(range.getRow(), 1, 1, sheet.getLastColumn()).moveTo(targetRange); 
    sheet.deleteRow(range.getRow()); 
    } 
} 
+0

式と参照するセルの値を追加します。 –

答えて

0

このスクリプトは意図したとおりに動作します。私は、スクリプトを使用して、テストのスプレッドシートを作成し、次のテストをしました:

  1. は列Aに乱数を入力します - 期待何も起こらなかったとして - 期待何も
  2. Column Aに0を入力した起こらなかったよう。
  3. Column Gに乱数を入力した(7) - 何もColumn G0入社
  4. が起こっていない - その行が他のシートに移動し
  5. 0に等しくcolumns EF5=E3-F3を入力した(この順序で) - 行が他のシート
  6. column F
  7. column E45に入り、column GにI 0をもたらし式=E3-F3を書いに移し。その後、を値5に変更し、式が0に再計算されました。予想通り、行はではなく、が移動しました。

は、式が実際にそれはあなたのセルが0として0.1を書き込むようにフォーマットされていることかもしれし、0の値を返すことを確認してください、それは正確に0でなければならないような式を移動できませんでし数0 < n < 1を返します。これが機能するには0より大きく1より小さい値を移動する場合は、読み取り値に対してMath.floor()を導入してください。

あなたがしている列以外の何かを変更する場合にのみ、その var range = sheet.getActiveCell();を見ているので、我々はスクリプトが G以外の任意の列(列番号 7)への変更を考慮に入れていないことに注意する必要があるテスト・シナリオ6では

0とすると、次のような理由で何もしません。ifステートメント部range.getColumn() == columnNumberToWatch

+0

ありがとうございます。それは理にかなっている。ユーザーが入力したかどうかにかかわらず、値が列に存在する場合、単に値を検索して行を削除するという提案がありますか? – Derk

+0

@Derkはい、単に 'if'の' sheet.getName()== sheetNameToWatch && range.getColumn()== columnNumberToWatch'部分を削除するだけで、その範囲の編集と 'var range = sheet.getActiveCell(); '実際に値が' 0'であると想定する場所を指定します。これが列7のどこかで発生した場合は、 'getActiveCell()'を保持し、 'var row = range.getRow()'を実行してから 'range = sheet.getRange(row、columnNumberToWatch)'を実行するとよいでしょう。編集すると、その行の列7を確認します – Vytautas

+0

フィードバックありがとうございます! – Derk

関連する問題