【发布时间】:2021-05-16 07:36:30
【问题描述】:
当电子表格第 5 列中的单元格值更改为基于公式 =IF(AND(B2>D2),"Buy","Skip") 的“购买”时,我想要一个通知/电子邮件。下面提供的附件链接。表格会根据 Googlefinance 数据自动刷新。
我已经尝试了以下脚本,但它仅在我手动更改单元格时才会触发通知/电子邮件。我不是代码编写者,但设法找到了下面的脚本并添加了我自己的一些调整。 有人可以帮我解决这个问题或提供替代解决方案吗? 也欢迎在第三方应用程序上编写的脚本。
function triggerOnEdit(e)
{
showMessageOnUpdate(e);
}
function showMessageOnUpdate(e)
{
var range = e.range;
SpreadsheetApp.getUi().alert("range updated " + range.getA1Notation());
}
function checkStatusIsBuy(e)
{
var range = e.range;
if(range.getColumn() <= 5 &&
range.getLastColumn() >=5 )
{
var edited_row = range.getRow();
var strongBuy = SpreadsheetApp.getActiveSheet().getRange(edited_row,5).getValue();
if(strongBuy == 'Buy')
{
return edited_row;
}
}
return 0;
}
function triggerOnEdit(e)
{
showMessageOnBuy(e);
}
function showMessageOnBuy(e)
{
var edited_row = checkStatusIsBuy(e);
if(edited_row > 0)
{
SpreadsheetApp.getUi().alert("Row # "+edited_row+"Buy!");
}
}
function sendEmailOnBuy(e)
{
var buy_row = checkStatusIsBuy(e);
if(buy_row <= 0)
{
return;
}
sendEmailByRow(buy_row);
}
function sendEmailByRow(row)
{
var values = SpreadsheetApp.getActiveSheet().getRange(row,1,row,5).getValues();
var row_values = values[0];
var mail = composeBuyEmail(row_values);
SpreadsheetApp.getUi().alert(" subject is "+mail.subject+"\n message "+mail.message);
}
function composeBuyEmail(row_values)
{
var stock_name = row_values[0];
var cmp = row_values[1];
var volume = row_values[2];
var message = "The Status has changed: "+stock_name+" "+cmp+
" Volume "+volume;
var subject = "Strong Buy "+stock_name+" "+cmp
return({message:message,subject:subject});
}
function triggerOnEdit(e)
{
sendEmailOnBuy(e);
}
var admin_email='sendemail@gmail.com';
function sendEmailByRow(row)
{
var values = SpreadsheetApp.getActiveSheet().getRange(row,1,row,5).getValues();
var row_values = values[0];
var mail = composeBuyEmail(row_values);
SpreadsheetApp.getUi().alert(" subject is "+mail.subject+"\n message "+mail.message);
[https://docs.google.com/spreadsheets/d/12k5DF8rvuKex77B8uRWpx1FoMmSNaMdGvhNEEbXKCFc/edit?usp=sharing][1]
【问题讨论】:
-
我刚刚要求您访问您的 spearsheet。
-
已授予访问权限! ??????????
-
与stackoverflow.com/questions/48173483/… 的问题相同。事实上,我不知道我们如何自动检测函数的结果。 OnEdit 需要手动输入。
-
没问题的兄弟,谢谢你的尝试!希望有人对此有解决方案。
-
尚不清楚单元格
B2和D2中的值如何更新。如果它们是手动更新的,请使用on editinstallable trigger。如果这些单元格中的值是通过googlefinance()获取的,您可以使用on change触发器来运行您的代码。如果没有使用on change触发器发送事件,则必须使用time-driven trigger。
标签: javascript email google-apps-script google-sheets