Performance 谷歌表单中的应用程序脚本功能卡在;“正在加载…”;

Performance 谷歌表单中的应用程序脚本功能卡在;“正在加载…”;,performance,google-apps-script,google-sheets,custom-function,Performance,Google Apps Script,Google Sheets,Custom Function,最近,我在谷歌表单和应用程序脚本方面遇到了一些问题,我希望有人能帮我解决。我将把这篇文章放在一个主题/问题上,但我将提到几个其他问题,这些问题只是为了更大的背景,以防其他问题与这个主题相关或可能导致这个主题特定的问题 问题:我的Google Speadsheet中的自定义应用程序脚本函数目前处于“加载…”状态,在撰写本文时已经超过一个小时了。在我的应用程序脚本仪表板的MyExecution中没有正在执行的日志,也没有报告任何错误。这些职能在过去几个月一直在发挥作用,直到今天 详情: 所以,在我的

最近,我在谷歌表单和应用程序脚本方面遇到了一些问题,我希望有人能帮我解决。我将把这篇文章放在一个主题/问题上,但我将提到几个其他问题,这些问题只是为了更大的背景,以防其他问题与这个主题相关或可能导致这个主题特定的问题

问题:我的Google Speadsheet中的自定义应用程序脚本函数目前处于“加载…”状态,在撰写本文时已经超过一个小时了。在我的应用程序脚本仪表板的MyExecution中没有正在执行的日志,也没有报告任何错误。这些职能在过去几个月一直在发挥作用,直到今天

详情: 所以,在我的Google工作表中,我使用了一个自定义方法“findSeenCount”。在几张表格中,它被使用了很多次,虽然我不认为逻辑与此相关,但我会说,它的目的是对太复杂的特定事物进行计数,无法将基本的电子表格计数和条件链接在一起。该函数本身运行良好,并且已经运行了几个月。然而,今天我正在处理一个单独的脚本(工作标题:newFunction),我开始注意到每次我保存脚本项目或在编辑器run->newFunction中,它都会触发工作表中的所有findSeenCount函数运行(就像它会在执行日志中得到一个条目一样),但会在工作表本身上运行(在实际调用的地方),它从未真正进行过重新计算。返回值保持不变,从未更改为“加载…”,但从仪表板上可以清楚地看到执行情况。这是一件非常累人的事情,而且很奇怪,因为当时我注意到这个正在发生的新函数只是做了两个简单的请求来获取一些特定的表,其中一个表上有一些findSeenCount函数(尽管我以前在其他一些函数中从未遇到过这个问题)

在这一点上,我的应用程序脚本仪表板->我的执行页面开始变得非常滞后,最终开始崩溃。没有报告错误,当页面加载时,我可以看到它完成了不需要的执行。它在我尝试工作时运行了数百次,最终我删除了所有findSeenCount函数完全在工作表中调用。在我这样做之后,我尝试触发的任何函数都无法工作。在工作表中,如果我调用函数,它将卡在“加载…”上,并且没有执行记录显示在我的仪表板->我的执行情况中。如果我在编辑器中运行函数,它将运行“运行函数”框会弹出,最终消失,就是这样。同样,在仪表板->我的执行中不会记录任何执行记录,它也不会将任何结果返回到日志“等待日志,请等待…”如果在日志语句中写入。我在任何地方都没有看到任何错误,我也不认为我超过了任何类型的执行限制,因为我希望在某个地方被告知我已经超过了。除此之外,我还注意到我有大量的执行被记录,我的意思是我的应用程序每天都会看到一些繁忙的流量,并且在过去的几个月里一直如此s、 仅仅在加载一页执行时,这一点就似乎造成了一些延迟,我不确定是否有办法清除这个列表,但这已经偏离了主题

如果有人对正在发生的事情有任何想法,或者我应该对此做些什么,或者我可以在哪里找到任何类型的日志,这些日志可能能够为我提供关于问题所在的更好细节,请让我知道


谢谢

一个快速修复方法是清除浏览器缓存和cookies,清除工作表并再次添加公式


更可靠的方法是放弃自定义公式,使用触发器、菜单或按钮。自定义函数在大规模情况下是不可靠的。

如果您想要快速修复,请尝试清除浏览器缓存和cookie,清除工作表,然后再次尝试添加公式。好了,我们开始了。有时最简单的答案是解决方案。确实如此最后解决了问题。至少在工作表上。泰!
function newFunction()
{
var attendanceSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Attendance"); 

// Sheet that contains findSeenCount.
var P1Sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("P1 Prio");

return;
}