gpt4 book ai didi

javascript - 电子邮件在加载应用程序脚本时发送,但电子邮件需要在单击时发送

转载 作者:行者123 更新时间:2023-12-03 05:28:47 24 4
gpt4 key购买 nike

我创建了一个应用程序脚本,可以在其中将电子邮件发送给登录用户和电子表格中提到的电子邮件 ID。该电子邮件将发送给事件用户和所有提到的电子邮件 ID。但是,我希望将电子邮件发送给登录用户(已完成),并在通过应用程序脚本选择时发送至指定的电子邮件 ID。

但是,当加载应用脚本时,邮件会发送到电子表格中提到的所有电子邮件 ID,而邮件应在单击时发送,这是行不通的。

function doGet() {
return HtmlService
.createTemplateFromFile('index')
.evaluate();
}


function getData() {
return SpreadsheetApp
.openById('SS ID')
.getDataRange()
.getValues();
}

function sendMessage(ManagerID,proNo,proName){
var email=Session.getActiveUser().getEmail();
var eId=ManagerID;
var subject="Feedback form initiated" ;
var message="Feedback form initiated by "+eId;
var message2="To fill the feedback form please follow the url: ";
var url="googleform's ID";
var subject2="Feedback Form";
MailApp.sendEmail(eId, subject, message);

MailApp.sendEmail(email,subject2,message2+url);
}





//index.html
<!DOCTYPE html>
<html>
<head>
<base target="_top">
</head>
<body onload="document.getElementById('one').style.visibility='hidden'">

<div id="initiateFb">
<form>
<? var data = getData(); ?>
<table border='1px solid black'>
<? for (var i = 0; i < data.length; i++) { ?>
<tr>
<? for (var j = 0; j < data[i].length; j++) { ?>
<td><?= data[i][j] ?></td>
<?if(j==(data[i].length-1)&&i!=0) { ?>
<td><input type="submit" name="submit" value="Initiate"
onclick="document.getElementById('initiateFb').style.display = 'none';
document.getElementById('one').style.visibility='visible';
<?var ManagerID=data[i][6];?> <?var proNo=data[i][1];?> <?var proName=data[i][2];?>
document.getElementById('div1').innerHTML='<?=data[i][1] ?>';
document.getElementById('div2').innerHTML='<?=data[i][2] ?>';
document.getElementById('div3').innerHTML='<?=data[i][3] ?>';
document.getElementById('div4').innerHTML='<?=data[i][4] ?>';
document.getElementById('div5').innerHTML='<?=data[i][5] ?>';
document.getElementById('div6').innerHTML='<?=data[i][6] ?>';
document.getElementById('div7').innerHTML='<?=data[i][7] ?>';
document.getElementById('div8').innerHTML='<?=data[i][8] ?>';
document.getElementById('div9').innerHTML='<?=data[i][9] ?>';
return false;"/>
</td>
<? } ?>
<? } ?>
</tr>
<? } ?>
</table>

</form>
</div>
<div id="one">
<form>
<table>
<tr>

<td>ca :</td>
<td id="div1"></td>
</tr>
<tr>
<td>cb :</td>
<td id="div2"></td>
</tr>
<tr>
<td>cc:</td>
<td id="div3"></td>
</tr>
<tr>
<td>cd :</td>
<td id="div4"></td>
</tr>
<tr>
<td>ce:</td>
<td id="div5"></td>
</tr>
<tr>
<td>cf:</td>
<td id="div6"></td>
</tr>
<tr>
<td>cg :</td>
<td id="div7"></td>
</tr>
<tr>
<td>ch :</td>
<td id="div8"></td>
</tr>
<tr>
<td>ci:</td>
<td id="div9"></td>
</tr>
</table>
<input type="submit" name="submit" value="Initiate Feedback" onclick="<?sendMessage(ManagerID,proNo,proName);?>"/>
</form>
</div>


</body>
</html>

我已附上我的代码。

最佳答案

arturro 在问题评论中是正确的。要进行异步调用,您必须使用

google.script.run.sendMessage(ManagerID,proNo,proName)

但是请注意

<input type="submit" name="submit" value="Initiate Feedback" onclick="google.script.run.sendMessage(ManagerID,proNo,proName)"

将不起作用,因为您是在 HTML 正文中执行此操作。你最好在 <script></script> 之间使用 javascript 代码。这将获取您需要的变量,然后您可以使用 google.script.run以便发送电子邮件。

所以你就会有

<script>
function sender() {
var ManagerID, proNo, proName;

//use Document.getElementById in order to populate the variables with
//what you need from the form

google.script.run.sendMessage(ManagerID, proNo, proName);
}
</script>
<input type="submit" name="submit" value="Initiate Feedback" onclick="sender()">

<script></script>部分应该在你的 index.html 中因为它是一个客户端脚本,将处理服务器端脚本的调用

我也做过类似的事情,效果很好。

关于javascript - 电子邮件在加载应用程序脚本时发送,但电子邮件需要在单击时发送,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41043644/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com