我让学生以决定他们想购买哪种货币的形式输入一个值。我希望谷歌电子表格查找和记录价格时,提交的表格。
由于我想确定货币事务的虚拟费用,所以我不希望电子表格自动更新电子表格这一部分中的货币价格。
发布于 2015-06-01 21:11:14
函数GoogleFinance可以做两件事之一:
=GoogleFinance("CURRENCY:USDBRL")=GoogleFinance("CURRENCY:USDBRL","price",DATE(2015,4,1))它不做的(不幸的)是在一个特定的时间在一个特定的一天的价格。所以,如果你想在提交表格时记录价格,你应该
=GoogleFinance("CURRENCY:USDBRL")。下面是一个在表单提交时执行此操作的脚本。
function recordPrice() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var row = sheet.getLastRow();
var cell = sheet.getRange(row,3);
cell.setFormula('GoogleFinance("CURRENCY:USDBRL")');
while (!cell.getValue()) {}
cell.copyTo(cell, {contentsOnly:true});
}
function Install() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
ScriptApp.newTrigger("recordPrice").forSpreadsheet(ss).onFormSubmit().create();
}
function Uninstall() {
var allTriggers = ScriptApp.getProjectTriggers();
for (var i = 0; i < allTriggers.length; i++) {
ScriptApp.deleteTrigger(allTriggers[i]);
}
}函数recordPrice与包含表单条目的工作表一起工作。对于每一个新行,它在C列中添加一个条目(仅仅因为我使用了sheet.getRange(row,3); --可能是另一列)和货币汇率。设置该公式后,它将等待该公式获取结果,然后将结果复制到同一单元格,但只复制值本身。因此,公式被改写,货币汇率保持在提交时的水平。
另外两个函数是技术性的:运行" install“来安装脚本(它将提示授权)。如果要停止货币汇率的收集,请运行“卸载”。
https://webapps.stackexchange.com/questions/78657
复制相似问题