Google sheets Google Sheets脚本挂起在getDataRange或getRange上
我有一个谷歌电子表格,可以让我跟踪成本和项目金额。我写了一个脚本来更新这些值;然而,今天它只是挂起在getRange或getDataRange上,即使在调试时也是如此。昨天这个工作很好Google sheets Google Sheets脚本挂起在getDataRange或getRange上,google-sheets,google-sheets-api,Google Sheets,Google Sheets Api,我有一个谷歌电子表格,可以让我跟踪成本和项目金额。我写了一个脚本来更新这些值;然而,今天它只是挂起在getRange或getDataRange上,即使在调试时也是如此。昨天这个工作很好 <code>function onOpen() { var menuEntries = [{name: "Update P0", functionName: "UpdateP0"}]; SpreadsheetApp.getActiveSpreadsheet().addMenu("PI
<code>function onOpen() {
var menuEntries = [{name: "Update P0", functionName: "UpdateP0"}];
SpreadsheetApp.getActiveSpreadsheet().addMenu("PI Utils", menuEntries);
}
function showMsg(data, title, timeout) {
if (typeof title == 'undefined') title = "";
if (typeof timeout == 'undefined') timeout = 5;
SpreadsheetApp.getActiveSpreadsheet().toast(data, title, timeout);
}
function UpdateP0() {
showMsg("Updating...", "", -1);
var piSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('PI (Set1)');
piSheet.activate();
//SpreadsheetApp.flush();
var numPlanets = 5;
try {
var dRange = piSheet.getRange('A1:F55'); // will not execute pass this line
} catch (e) {
throw (e);
return;
}
for (var p = 1, prGroup = 1; p <= numPlanets; p++, prGroup += 11) {
var cell1, cell2, v1, v2;
// update extraction amounts
for (var r = 0; r < 3; r++) {
cell1 = dRange.getCell(prGroup + 2 + r, 3);
cell2 = dRange.getCell(prGroup + 2 + r, 4);
v1 = cell1.getValue().toString();
v2 = cell2.getValue().toString();
v1 = (v1.length == 0) ? parseFloat(0.0) : parseFloat(v1);
v2 = (v2.length == 0) ? parseFloat(0.0) : parseFloat(v2);
v2 += v1;
cell1.setValue(0);
cell2.setValue(v2);
}
// update production costs
for (var c = 2; c <= 5; c++) {
cell1 = dRange.getCell(prGroup + 9, c);
cell2 = dRange.getCell(prGroup + 8, c);
v1 = cell1.getValue().toString();
v2 = cell2.getValue().toString();
v1 = (v1.length == 0) ? parseFloat(0.0) : parseFloat(v1);
v2 = (v2.length == 0) ? parseFloat(0.0) : parseFloat(v2);
v2 += v1;
cell1.setValue(0);
cell2.setValue(v2);
}
}
SpreadsheetApp.flush();
showMsg("Completed.", "", 5);
}</code>
函数onOpen(){
var menuEntries=[{name:“UpdateP0”,functionName:“UpdateP0”}];
SpreadsheetApp.getActiveSpreadsheet().addMenu(“PI Utils”,menuEntries);
}
函数showMsg(数据、标题、超时){
如果(标题类型==“未定义”)标题=”;
如果(超时类型==‘未定义’)超时=5;
SpreadsheetApp.getActiveSpreadsheet().toast(数据、标题、超时);
}
函数UpdateP0(){
showMsg(“更新…”,”,-1);
var piSheet=SpreadsheetApp.getActiveSpreadsheet().getSheetByName('PI(Set1)');
piSheet.activate();
//SpreadsheetApp.flush();
var numPlanets=5;
试一试{
var dRange=piSheet.getRange('A1:F55');//将不执行传递此行
}捕获(e){
投掷(e);
返回;
}
对于(var p=1,prGroup=1;p我是如何解决这个问题的(或者可能是巧合)创建一个新的工作表,使用调整后的名称,然后剪切并粘贴从旧工作表到新工作表的所有内容,最后删除旧工作表。在新工作表上运行该函数。调试器似乎总是挂起在一个catch块中。试着改用“Run”并检查执行记录('View'-'execution transcript'))查看代码是否失败。在添加try-catch块之前,问题已经存在。我删除了它并删除了showMsg行,但当我从电子表格运行它时,它仍然挂起,当我调试时,它挂起在getRange上。