2017-06-06 12 views
-2

私はここ数日間、毎日何時間も仕事をしているに過ぎない何かを働かそうとしています。Forループが計画どおりに動作していない

私の現在のコードは次のとおりです。

function NewNameChange() { 
    var Dashboard = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Dashboard') 
    var NameChanges = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Name Changes') 
    //var Number1 = 0 
    var Number2 = 6 
    var CellCheck = NameChanges.getRange('B' + Number2) 
    var Cell1 = NameChanges.getRange('B' + Number2) 
    var Cell2 = NameChanges.getRange('D' + Number2) 
    var Cell3 = NameChanges.getRange('F' + Number2) 
    var Cell4 = NameChanges.getRange('H' + Number2) 

    for (var Number1 = 0; Number1 == 0; Number2++) { 
    if (CellCheck.isBlank()) { 

     Dashboard.getRange('B14').copyTo(Cell1) 
     Dashboard.getRange('D14').copyTo(Cell2) 
     Dashboard.getRange('F14').copyTo(Cell3) 
     Dashboard.getRange('H14').copyTo(Cell4) 

     Dashboard.getRange('B14').clear() 
     Dashboard.getRange('D14').clear() 
     Dashboard.getRange('F14').clear() 
     Dashboard.getRange('H14').clear() 

     Number1 = 1; 
    } 
    } 
} 

このセルが空の場合、このコードの目的は、名前の変更という名前のシートにセルB6を見ている、それはダッシュボードとコピーという名前のシートに行きますB14、D14、F14、H14の4つのフィールドを作成し、セルB6、D6、F6、H6にコピーしてName Changesシートにコピーします。最後に、セルB14、D14、F14、およびH14をクリアします。これはすばらしいことですが、問題は、スクリプトが実行され、B6、D6、F6、およびH6のデータがあるため、セルが空でないときにスクリプトがタイムアウトするまで実行されることです。理論的にはforループの終わりに到達し、Number2に1を与えてCellCheckがB7を見るようにしますが、何も起こりません。

初めてフォーラムに参加したとき、他の回答がどれほど役立ったかを考慮してアカウントを作成しました。私が間違って使用した場合、私は残念です、また、あなたがいくつかのさらなる説明が必要な場合は私に教えてください!

+3

これは特に言語ですか? –

+1

あなたのコードをデバッグして、なぜ値が決して得られないのかを知る必要があるようです。 –

+0

わかりませんが、私は単にScript Editorを使用しています。 –

答えて

1

CellCheckからCell4はループ内では変更されません。 Number2を使用して初期化しましたが、Number2を変更しても他の値は自動的に変更されません。明示的に再割り当てする必要があります。

+0

本当にありがとうございます、実際には今、多くの意味があります! –

関連する問題