2017-06-06 92 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,并将其复制到单元格B6,D6,F6,H6到Name Changes表单上。最后清除单元格B14,D14,F14和H14。这是非常奇妙的,问题在于,当单元格不是空的时候,因为脚本已经在之前运行,并且现在有B6,D6,F6和H6中的数据,脚本将运行至超时。理论上它应该到达for循环的末尾,并且有一个到Number2,然后导致CellCheck查看B7,尽管没有发生任何事情。

在这个论坛上的第一次,我认为我会考虑寻求一些帮助,考虑其他答案有多大帮助。如果我错误地使用了它,我很抱歉,如果您需要进一步解释,请告诉我!

+3

这是特别的语言吗? –

+1

看起来你只需要调试你的代码,看看为什么值永远不会被设置。 –

+0

不确定,我的意思是我简单地使用我们提供的脚本编辑器。 –

回答

1

CellCheckCell4在循环内部没有修改;而Number2用于初始化它们,更改Number2不会自动更改这些其他值:它们必须明确重新分配给它们。

+0

非常感谢,现在它确实有很多意义! –