javascript - 尝试脚本化的谷歌表格
问题描述
我对电子表格脚本有点陌生,我有一个想要完成的项目。
概述:
我正在制作记录阅读进度的电子表格。第一列 (A) 是日期。第二列(B)是阅读所需的时间。第三列 (C) 是花费在阅读上的分钟数。第四列 (D) 是如下所述的奖励分钟数。第五列 (E) 是 (Effort+Bonus-Requirement) 的结果
如果您花费超过 30 分钟(比如说 30+x 分钟),则额外的用于为接下来的 x 天增加 1 分钟。因此,如果您在接下来的 7 天中花费 37 分钟阅读,您将获得 1 分钟的奖励,因此您需要在接下来的 7 天中花费 29 分钟而不是通常的 30 分钟。
然而,奖金可以累积和叠加。如果您在第一天花费 37 分钟,则第二天您需要花费 29 分钟,但如果您总共花费了 35 分钟,那么接下来的 5 天(第二天之后)将再获得 1 分钟奖励,所以第三天一天将有总共2分钟的奖金。所以这个例子中更大的图景将是第 2 天获得 +1,第 3 到第 7 天将获得 2 分钟,第 8 天将获得 1 分钟(从第一天开始,而不是从第二天开始)。
要解决的其他标准:
计算的最大奖励是无上限的,因此如果用户需要花 30 分钟阅读,而他们花了 150 分钟,那么接下来的 120 天内,每天 120 分钟的奖励将被添加为 1 分钟。
红利可无限制叠加,如果总金额超过每日要求的限额将被正常处理,仅通过红利即可达到并超过要求的30分钟,将被正常处理。如果您在某一天有 35 分钟的累积奖金,即使在这一天到来之前,它也会被视为“目标达成 + 5 分钟奖金”。然而,没有什么可以阻止当天超额完成以增加奖金。
我的努力
我已经使用 google sheet javascript 编写了一些脚本,但问题是我必须创建一个需要在每个单元格中使用的函数,因为据我了解,脚本不能在其调用的单元格以外的单元格上使用 setValue()在。
此外,函数的工作方式是它们仅在您将单元格设置为“=myFunction()”时调用,并且即使您更改用作输入的单元格也不会更改。
一些代码
这是我创建的函数,它工作正常,但是我需要它保持持久性并实时进行计算。
function c() {
var app = SpreadsheetApp;
var ss = app.getActiveSpreadsheet();
var activeSheet = ss.getActiveSheet();
var thisCell = activeSheet.getCurrentCell();
var thisColumn = thisCell.getColumn();
var thisRow = thisCell.getRow();
var finalValue = 0;
for (var i = 2; i< thisRow; i++) {
//if the value in cell Ei is greater than the difference between (thisRow-i) then increment cell
if (activeSheet.getRange("E"+i).getValue() >= (thisRow-i)){
Logger.log(activeSheet.getRange("E"+i).getValue());
finalValue++;
}
}
return (finalValue);
Logger.log("final "+finalValue);
}
我希望我的问题对你来说足够清楚。
解决方案
推荐阅读
- php - 通过相同的键合并两个关联数组
- macos - 启动后如何重新启动docker-machine?
- apache-camel - 什么队列或队列是骆驼路由监听
- internet-explorer - 您将如何使使用 HTC 的仅 IE5 网站在现代网络浏览器中运行?
- python - 循环遍历 Python 数组导致列表索引超出范围错误
- linux-kernel - PCI MMIO 读取数据延迟的原因是什么?
- javascript - chrome非活动标签中的通知声音
- qt - Qt 中缺少 QLoggingCategory
- graphql - BigDecimal Graphql Js
- java - 为什么我无法获得对地图中某个值的引用?