【发布时间】:2019-07-03 14:31:40
【问题描述】:
我已经制定了一个公式(我绝不是程序员)来满足我的 Google 表格需求。但是一旦从谷歌表单更新了更多单元格,我必须手动运行代码。然后,我将某些单元格带到另一张表中以根据该信息呈现报告,因此每次有新信息时我都需要运行我的这个公式。我还有一个从前一个日期加载的列(“O:O”),我不希望它加载到第二天,直到表单条目有时间戳,因为它使工作表加载提前几天.
function myFunction() {
var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
ss.getRange("N2").setFormula("=(I2*0.01)+(H2*0.05)+(G2*0.1)+(F2*0.25)+(E2*0.5)+(D2)+(C2)");
var lr = ss.getLastRow();
var fillDownRange = ss.getRange(2, 14, lr-1);
ss.getRange("N2").copyTo(fillDownRange);
var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
ss.getRange("M2").setFormula("=N2-L2-J2");
var lr = ss.getLastRow();
var fillDownRange = ss.getRange(2, 13, lr-1);
ss.getRange("M2").copyTo(fillDownRange);
var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
ss.getRange("P3").setFormula("=N3-O3");
var lr = ss.getLastRow();
var fillDownRange = ss.getRange(2, 16, lr-1);
ss.getRange("P3").copyTo(fillDownRange);
var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
ss.getRange("O3").setFormula("=M2");
var lr = ss.getLastRow();
var fillDownRange = ss.getRange(3, 15, lr+1);
ss.getRange("O3").copyTo(fillDownRange);
var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
ss.getRange("Q2").setFormula("=A2");
var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
ss.getRange("Q2").setNumberFormat('dd MMM yyyy');
var lr = ss.getLastRow();
var fillDownRange = ss.getRange(2, 17, lr-1);
ss.getRange("Q2").copyTo(fillDownRange);
}
我的公式正在工作,但就像我说的那样,我希望 O 列不要在条目之前加载,而是等待新的时间戳起作用,我希望我的公式在有新信息时立即计算。 如果我的问题做得不好,请提前致谢。 (我第一次使用 Stack Exchange)
【问题讨论】:
-
不知道你说的
I would like the O column to not load ahead of entries是什么意思?您还说`我希望我的公式在有新信息时立即计算`您的工作表如何获得新信息。我可能会对您的电子表格有所帮助,并举例说明您想要更改的内容。 -
对不起,我没有更好的解释,但我的工作表从表格中获取信息,它基本上是在寄存器中计算钱,并且 O(留在寄存器中的钱)被带到第二天它后来从计算的金额中减去,以了解当天的总销售额。抱歉,如果我不能使用确切的术语。
标签: google-apps-script google-sheets triggers