【发布时间】:2019-08-25 01:22:03
【问题描述】:
我正在尝试创建一个公式,该公式将在文本字符串中查找将出现在随机单元格中但尚未出现的数字(一旦有人从中选择一个选项,该值就会显示在电子表格中谷歌表格)。一旦值出现,我就可以使公式正常工作,但我需要它能够在值出现之前查找它。不知道如何更好地解释它,但这里有一个场景:
用户可以在 Google 表单上的 50 个选项中进行选择。他们选择“项目 203”。然后将“项目 203”添加到电子表格中,并计算它被选择的次数。当“项目 203”被选中 20 次时,将向指定人员发送一封电子邮件。
我的问题是有时没有选择所有项目,因此“项目 203”并不总是显示在同一个单元格中。我似乎无法弄清楚。如果有人有任何帮助很大的建议。谢谢!
编辑: 如果该值不存在,那么它不会做任何事情。它只查找项目的数字部分。因此,如果有“第 203 项、第 204 项、第 205 项等”。我需要让公式计算 203 出现的次数以及是否在 20 处发送电子邮件。然后我需要对 Item 204 做同样的事情,唯一不同的是电子邮件的收件人等等。我正在尝试制定一个现在可以使用的公式,但不完全存在。如果我得到一个有效的或至少在某种程度上有效的,我会发布它。
这是我用来计算 C 列中项目的公式。
=ArrayFormula(QUERY(C1:C3000&{"",""},"select Col1, count(Col2) where Col1 != '' group by Col1 label count(Col2) 'Count'",1))
我希望这样的事情发生。我的问题是我不知道第 203 项最终在哪个单元格中,因为人们不会每天都选择相同的项目。我确实知道我想以 20 的值发送电子邮件。
// Fetch the email address
var emailRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1").getRange("B2");
var emailAddress = emailRange.getValues();
// Send Alert Email.
var message = 'This is your Alert email!';
// Second column
var subject = 'Your Google Spreadsheet Alert';
MailApp.sendEmail(emailAddress, subject, message);
“getRange("B2") 对我不起作用,因为第 203 项并不总是在单元格 B2 中结束。
编辑 2: 这是我目前拥有的脚本。现在,当我单击表单上的提交时,它会通过电子邮件发送给我,因为我设置了一个自动触发器来在每次提交表单时运行脚本。我希望它能够等待给我发电子邮件,直到满足“项目 203”的条件(或任何项目#)。我希望它在满足“项目 204”条件时向其他人发送电子邮件。如果同时满足多个条件,即:“项目 203 和 204 都达到 20 个选择”,那么它会通过电子邮件向我发送 203 和其他人的 204。日志现在可以工作,但我必须手动运行脚本才能得到它工作。
function autoEmail(){
sendEmail();
myFunction();
}
function myFunction() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Daily
Count");
var data = sheet.getDataRange().getDisplayValues();
var total = {"Item 203": 0, "Item 204": 0};
for(var i=0; i<data.length ; i++){
var row = data[i];
for(var j=0; j<row.length ; j++) {
var cell = row[j];
for(item in total) {
var replace = item;
var re = new RegExp(replace,"g");
var count = (cell.match(re) || []).length;
total[replace] += count;
}
}
}
Logger.log(total);
}
function sendEmail() {
// Fetch the email address
var emailRange =
SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Daily
Count").getRange("H4");
var emailAddress = emailRange.getValues();
// Send Alert Email.
var message = 'My test email.';
// Second column
var subject = 'This is a test.';
MailApp.sendEmail(emailAddress, subject, message);
}
【问题讨论】:
-
如果值不存在,应该是什么结果?公式是什么?也就是说,请添加minimal reproducible example。
标签: google-apps-script google-sheets google-sheets-formula