【发布时间】:2018-09-25 09:08:50
【问题描述】:
我一直在使用自定义函数将简单的数学分解为可读的 JavaScript,但出现以下错误:
服务在短时间内调用太多次:exec qps。在通话之间尝试
Utilities.sleep(1000)。 (第 0 行)。
我曾尝试随机睡眠一段时间,但这无济于事。我的函数如下所示:
function conversationGrowthRate(clientCount, initialGrowthRate, conversationCount) {
//Utilities.sleep(Math.random() * 30000);
for (var i = clientCount; i > 10; i--) {
if (initialGrowthRate > 0) {
conversationCount += initialGrowthRate
initialGrowthRate -= 0.000003
}
}
return conversationCount;
}
function conversionGrowth(clientCount, conversationCount, initialConversionRate, conversionGrowthRate, maxConversionRate, coversPerBooking, initialConversationGrowthRate, initialConversationCount) {
//Utilities.sleep(Math.random() * 30000);
if (clientCount <= 50) {
return coversPerBooking * conversationCount * initialConversionRate;
}
else {
var firstFiftyClientConversations = conversationGrowthRate(50,initialConversationGrowthRate, initialConversationCount)*30*50; //~30
var additionalConversionGrowthRate = (clientCount-50) * conversionGrowthRate;
var totalConversionRate = initialConversionRate + additionalConversionGrowthRate;
var additionalClientConversations = conversationGrowthRate(clientCount-50, initialConversationGrowthRate, initialConversationCount) * 30 * (clientCount-50);
if (totalConversionRate < maxConversionRate) {
return coversPerBooking * ((firstFiftyClientConversations * initialConversionRate) + (additionalClientConversations * totalConversionRate));
}
else {
return coversPerBooking * (conversationCount * maxConversionRate);
}
}
}
function salesProductivity(currentExecs, prevMonthExecs, prevTwoMonthExecs, prevThreeMonthExecs, prevFourMonthExecs, salesPerExecPerMonth) {
//Utilities.sleep(Math.random() * 30000);
var firstMonthHires = currentExecs - prevMonthExecs;
var secondMonthHires = prevMonthExecs - prevTwoMonthExecs;
var thirdMonthHires = prevTwoMonthExecs - prevThreeMonthExecs;
var fourthMonthHires = prevThreeMonthExecs - prevFourMonthExecs;
var longerHires = prevFourMonthExecs;
return (secondMonthHires * (0.33 * salesPerExecPerMonth)) + (thirdMonthHires * (0.66 * salesPerExecPerMonth)) + (fourthMonthHires * (1 * salesPerExecPerMonth)) + (longerHires * salesPerExecPerMonth);
}
在它开始工作之前我什么都没做。
【问题讨论】:
-
能否将获取/设置值的脚本包含在单元格中?
-
根据自定义函数的最佳实践,考虑重写以使用数组输入而不是单个单元格。 developers.google.com/apps-script/guides/sheets/…
-
@ThumChoonTat 像这样,例如:
=conversationGrowthRate(B4,Summary!$G$29)*30*B4 -
@tehhowch 我不知道如何在我的用例中做到这一点。每个函数都依赖于工作表中的各种输入——这个例子没有多大帮助,我在尝试时仍然会出错。
-
@thum 我不推荐使用“on change”触发器。我建议能够使用从工作表到脚本的一次调用以及相应输入的数组,并让函数返回相应输出的数组。
标签: google-apps-script google-sheets custom-function