我在Google表格文件中写了一个非常简单的代码。目的是:
问题在于,似乎大多数情况下,在我告诉脚本运行脚本后,它甚至都没有运行。 有趣的是,有时它会运行得非常慢,但会持续几分钟。然后它再次停止工作。
能告诉我我在这里想念什么吗?
function Copy_Static_on_Dynamic() {
var app = SpreadsheetApp;
var ss = app.openById("xxxxyy--------yyzzzz")
var StaticSheet = ss.getSheetByName("DEAT Price");
var DynamicSheet = ss.getSheetByName("DEAT Price + TEST");
var CopySKU = StaticSheet.getRange(5,1,40);
var CopyPrices = StaticSheet.getRange(5,3,40,4);
var CopyUsage = StaticSheet.getRange(5,8,40);
var Week_1 = StaticSheet.getRange(2,4).getValues();
var i = 1;
Logger.clear();
while(DynamicSheet.getRange(i,3).getValues() != Week_1)
{
Logger.log(i);
i+=1;
}
CopySKU.copyTo(DynamicSheet.getRange(i,4,40));
CopyPrices.copyTo(DynamicSheet.getRange(i,6,40,4));
CopyUsage.copyTo(DynamicSheet.getRange(i,11,40));
}
答案 0 :(得分:0)
如果在Apps脚本编辑器中看到“正在准备执行”消息,则可以重新加载浏览器窗口并再次运行该功能。该程序可能会消失。
答案 1 :(得分:0)
如阿米特·阿加瓦尔(Amit Agarwal)所述,要解决问题中提到的错误消息,请刷新Web浏览器标签。
关于代码,
在
var Week_1 = StaticSheet.getRange(2,4).getValues();
和
DynamicSheet.getRange(i,3).getValues()
您应该使用getValue而不是getValue,因为您的代码是指单个单元格单元格,否则您将获取2D数组而不是标量值。
使用while
时应格外小心,以免功能无限运行。您可以添加如下的“保障措施”
var max_iterations = 100 // Edit this
while(DynamicSheet.getRange(i,3).getValue() != Week_1 && i <= max_iterations) {
答案 2 :(得分:0)
所以我想我已经解决了。 正如Serge insas所说的那样,我的脚本在后台运行,我在“执行”部分找到了该脚本,您也可以在其中中断它们。 发现它之后,我继续进行测试,然后发现while循环每次需要近2秒钟来检查条件,这使得脚本非常长。 所以代替:
while(DynamicSheet.getRange(i,3).getValues() != Week_1)
...我创建了一个先前声明的变量,例如:
var WeekLOOP = DynamicSheet.getRange(i,3).getValues();
while(WeekLOOP != Week_1) { --- }
...,现在脚本需要几毫秒来运行条件。我没有足够的技术知识来说明这是否是唯一的问题,但是显然可以解决我的问题。 感谢大家的支持!如果我需要其他帮助,会回来的:)