Google apps script 谷歌表单关于车辆服务的有条件电子邮件警报到期
Noob警报。 我正在建立一个车辆维护记录表,因为我找不到一个不做太多事情就能做我想做的事情的程序 我无法让电子邮件部分给出任何结果。在“O”列的“Maint Sched.”表中,我预测了今天的小时数(我对所有车辆和设备都使用“小时”)。我希望在“O”列中的值接近“S”和“U”列中的值时发送电子邮件。最好在“设置”中有一个值点来确定((“小时”-“设置值”)=(列“S”或“U”)Google apps script 谷歌表单关于车辆服务的有条件电子邮件警报到期,google-apps-script,google-sheets,google-sheets-formula,Google Apps Script,Google Sheets,Google Sheets Formula,Noob警报。 我正在建立一个车辆维护记录表,因为我找不到一个不做太多事情就能做我想做的事情的程序 我无法让电子邮件部分给出任何结果。在“O”列的“Maint Sched.”表中,我预测了今天的小时数(我对所有车辆和设备都使用“小时”)。我希望在“O”列中的值接近“S”和“U”列中的值时发送电子邮件。最好在“设置”中有一个值点来确定((“小时”-“设置值”)=(列“S”或“U”) 在我当前的代码中,即使值匹配,电子邮件也不会发送(没有错误,只是没有收到电子邮件) 当“O”列的值等于或大于“S”或
- 您使用的是
为了从范围中获取值,您应该指定范围,然后使用getValue()
getValues()
- 您试图在不使用循环的情况下对值数组执行操作
- 您多次调用
服务,这可能会导致脚本执行延迟电子表格
VehicleMiles
和VehicleMiles
的范围中获取值,因此使用了带有以下参数的getRange
方法:
- 第一个参数表示行
- 第二个参数表示列
- 第三个参数表示行数
- 第四个参数表示列数
getValues()
方法。这将返回一个2D数组,因此为了访问这些值,需要使用循环
注
请记住,您可能必须相应地调整范围以适合您的数据。此外,构建for
循环时考虑到车辆里程
和车辆里程
包含相同数量的元素
参考文献
- )
- )
var vehicleCurrentMiles = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Maint Sched.").getRange("Q4");
var vehicleCMiles = vehicleCurrentMiles.getValue();
var vehicleDueMiles = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Maint Sched.").getRange("S4");
var vehicleDMiles = vehicleDueMiles.getValue();
var vehicle = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Maint Sched.").getRange("A4");
if (vehicleCMiles = vehicleDMiles){
var emailRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Settings").getRange("B1");
var emailAddress = emailRange.getValue();
var message = 'The ' + vehicle + 'is due for service ';
var subject = 'Service Due';
MailApp.sendEmail(emailAddress, subject, message);
}
}
var vehicleCurrentMiles = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Maint Sched.").getRange("Q4:Q");
var vehicleCMiles = vehicleCurrentMiles.getValue();
var vehicleDueMiles = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Maint Sched.").getRange("S4:S");
var vehicleDMiles = vehicleDueMiles.getValue();
var equipValue = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Maint Sched.").getRange("A4:A");
var equipV = equipValue.getValue();
var vehiclevariable = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Settings").getRange("B2");
var vehicleV = vehiclevariable.getValue();
if (vehicleCMiles >= (vehicleDMiles - vehicleV)) {
var emailRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Settings").getRange("B1");
var emailAddress = emailRange.getValue();
var message = 'The ' + equipV + ' is at ' + vehicleCMiles +' miles/hours and is due for service at ' + vehicleDMiles + '.';
var subject = 'Service Due';
MailApp.sendEmail(emailAddress, subject, message);
}
}
function sendEmail() {
let spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
let maintSched = spreadsheet.getSheetByName("Maint Sched.");
let settSheet = spreadsheet.getSheetByName("Settings");
let vehicleCMiles = maintSched.getRange(4, 17, 100, 1).getValues();
let vehicleDMiles = maintSched.getRange(4, 19, 100, 1).getValues();
let equipValue = maintSched.getRange(4, 1, 100, 1).getValues();
let vehicleV = settSheet.getRange(2, 2).getValue();
let emailAddress = settSheet.getRange(1, 2).getValue();
for (let i = 0; i < vehicleCMiles.length; i++)
if (vehicleCMiles[i][0] >= vehicleDMiles[i][0] - vehicleV) {
// other operations
}
}