2016-05-07 31 views
0

私は非常に簡単な質問があります 私はこのスクリプトが完璧に動作することを発見しました。 という名前のシート内の特定の列にの日付の値を検索し、が検出されたら、その行をという別のシートに移動します。を取得します。私は他のソースシートと同じことをするだけです。 例:Needed1、Needed2、Needed3、Needed4という4つのシートがあります。それらのすべては、日付が入力された行を同じ取得シートに移動する必要があります。誰かが私を助けてくれることを願っているありがとうございました!GoogleスプレッドシートスクリプトonEdit

function onEdit() { 
    // moves a row from a sheet to another sheet when a date is entered in a column 
    // adjust the following variables to fit your needs 
    // version 1.0, written by --Hyde, 24 September 2014 
    // see https://productforums.google.com/d/topic/docs/wtzlc_ludTw/discussion 

    var sheetToWatch = "Needed"; 
    var columnNumberToWatch = /* column G */ 4; // column A = 1, B = 2, etc. 
    var sheetToMoveTheRowTo = "Acquired"; 

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

    if (sheet.getName() == sheetToWatch && cell.getColumn() == columnNumberToWatch && cell.getValue() instanceof Date) { 
    var targetSheet = ss.getSheetByName(sheetToMoveTheRowTo); 
    var targetRange = targetSheet.getRange(targetSheet.getLastRow() + 1, 1); 
    sheet.getRange(cell.getRow(), 1, 1, sheet.getLastColumn()).moveTo(targetRange); 
    sheet.deleteRow(cell.getRow()); 
    } 
} 

答えて

0

短い答え:

function onEdit() { 

    var sheetsToWatch = ["Needed1", "Needed2", "Needed3", "Needed4"]; 

    for (var i = 0; i < sheetsToWatch.length; i++) { 
    var sheetToWatch = sheetsToWatch[i]; 

    // all good code goes here 

    }  
} 

、全体のコードは次のとおりです。

function onEdit() { 
    // moves a row from a sheet to another sheet when a date is entered in a column 
    // adjust the following variables to fit your needs 
    // version 1.0, written by --Hyde, 24 September 2014 
    // see https://productforums.google.com/d/topic/docs/wtzlc_ludTw/discussion 

    var sheetsToWatch = ["Needed1", "Needed2", "Needed3", "Needed4"]; 

    for (var i = 0; i < sheetsToWatch.length; i++) { 
    var sheetToWatch = sheetsToWatch[i]; 
    var columnNumberToWatch = /* column G */ 4; // column A = 1, B = 2, etc. 
    var sheetToMoveTheRowTo = "Acquired"; 

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

    if (sheet.getName() == sheetToWatch && cell.getColumn() == columnNumberToWatch && cell.getValue() instanceof Date) { 
     var targetSheet = ss.getSheetByName(sheetToMoveTheRowTo); 
     var targetRange = targetSheet.getRange(targetSheet.getLastRow() + 1, 1); 
     sheet.getRange(cell.getRow(), 1, 1, sheet.getLastColumn()).moveTo(targetRange); 
     sheet.deleteRow(cell.getRow()); 
    } 

    } 

} 

あなたは配列に新しいシート名を追加する可能性があります。

var sheetsToWatch = ["Needed1", "Needed2", "Needed3", "Needed4", "New Name"]; 
+0

は非常にマックスをありがとう!! 最後の質問が1つあります。入力した日付をどのように置き換えることができますか?たとえば、数字や簡単なテキスト?それは簡単な方法で可能ですか?ありがとうございました! – user3741840

+0

この部分の '&& cell.getValue()instanceof Date'は、入力された値がdateかどうかをチェックします。削除すると、どんな種類のエントリも置き換えられます。 –

関連する問題