google-apps-script - 如何自动运行 Google Apps 脚本并自动更新 google sheet?
问题描述
我是 JavaScript 和 Google Apps 脚本的初学者。
我编写了一段简单的代码来跟踪学生在班级中的安置状态,我希望程序自动运行并实时更改字段。
例如,如果学生在第 10 个标准中输入 58% 并按 Enter,则资格状态应自动更改为“不合格”等。是否可以制作一个让谷歌表格自动获取值的程序?
我粘贴下面的代码以供参考。请告诉我如何让谷歌表自动取值。
function placementMonitoring() {
var app = SpreadsheetApp;
//Get current active sheet
var activeSheet = app.getActiveSpreadsheet().getActiveSheet();
var someCell = activeSheet.getRange(3, 6).getValue();
Logger.log(someCell);
//var newCell=activeSheet.getRange(3,3).setValue(someCell+1)
for (var i = 3; i <= 59; i++) {
var someCell1 = activeSheet.getRange(i, 6).getValue();
//attempt code for DEBARRED
if (someCell1 == "D") {
var attempt = 0;
activeSheet.getRange(i, 7).setValue(attempt);
} else
//attempt code for PARTIALY DEBARED
if (someCell1 == "PD") {
attempt = 5;
activeSheet.getRange(i, 7).setValue(attempt);
} else
// attempt code for unplaced students
if (someCell1 = "UP") {
attempt = "NOT APPLICABLE";
activeSheet.getRange(i, 7).setValue(attempt);
}
}
for (var i = 3; i <= 59; i++) {
var someCell2 = activeSheet.getRange(i, 12).getValue();
var someCell3 = activeSheet.getRange(i, 15).getValue();
var someCell4 = activeSheet.getRange(i, 18).getValue();
var someCell5 = activeSheet.getRange(i, 20).getValue();
var someCell6 = activeSheet.getRange(i, 21).getValue();
if (someCell2 == 60 && someCell3 == 60 && someCell4 == 60 && someCell5 == 60 &&
someCell6 == 60) {
var eligibility = " Eligible";
activeSheet.getRange(i, 8).setValue(eligibility);
} else {
var eligibility = "Not Eligible";
activeSheet.getRange(i, 8).setValue(eligibility);
}
}
}
解决方案
好的,所以我为完成类似的事情所做的是创建一个新函数,其中包含一堆 if/else 语句。然后我创建了一个“数据表”,它只不过是一张用来保存我需要的数据的表。此脚本检查单元格 B1 的值是否为“Daryl I”。如果确实如此,则它将数据从“数据表”复制到新表中。每当单元格 B1 中的数据发生更改时,它就会自动运行与该“名称 N.”关联的脚本。
if (source.getRange('B1').getValue() == "Daryl I.")
{
var source_range = source.getRange("B5:N20");
var target_range = target.getRange("B2:N17");
target_range.copyTo(source_range);
}
您需要创建一个专门命名为 this 的函数,并定义您希望它主动检查的列和行。必须命名为“函数 onEdit(e)”。
简单触发器
https://developers.google.com/apps-script/guides/triggers/
function onEdit(e) {
if (
e.source.getSheetName() == "Inked Not OA'd" &&
e.range.columnStart == 2 &&
e.range.columnEnd == 2 &&
e.range.rowStart >= 1 &&
e.range.rowEnd <= 1
)
推荐阅读
- c# - 为什么我在此 OpenXML Excel 下载中收到“已修复的记录:来自 /xl/styles.xml 部分的格式”错误?
- spring - Cannot connect to dockerized Cassandra
- python - Python中用于浮点数的分数
- powerbi - 删除汇总表中的重复项
- javascript - 自动播放和循环播放一系列视频,并随每个视频更改 CSS
- python - 如何在 ML 模型(Python OpenCV)中正确使用 UMats?
- networking - 通过骨干接口路由数据包
- neural-network - 如何在尖峰神经网络中将“布尔尖峰结果”映射到“浮点输入电流值”?
- apache-kafka - 如何让 Java 中的 Kafka 通配符使用者更快地了解新主题?
- visual-studio - 检查 VSTS 服务器时区