Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google sheets Google Sheets脚本挂起在getDataRange或getRange上_Google Sheets_Google Sheets Api - Fatal编程技术网

Google sheets Google Sheets脚本挂起在getDataRange或getRange上

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

我有一个谷歌电子表格,可以让我跟踪成本和项目金额。我写了一个脚本来更新这些值;然而,今天它只是挂起在getRange或getDataRange上,即使在调试时也是如此。昨天这个工作很好

<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上。