email - doGet 在谷歌插件脚本文件上失败
问题描述
我正在尝试使用电子邮件中的内联图像来跟踪电子邮件状态。
为了获得响应,我正在使用以下代码。
// handles the get request to the server
function doGet(e) {
Logger.log(e.parameter);
var method = e.parameter['method'];
switch (method) {
case 'track':
var email = e.parameter['email'];
updateEmailStatus(email);
default:
break;
}
}
function updateEmailStatus(emailToTrack) {
// get the active spreadsheet and data in it
var id = SpreadsheetApp.getActiveSpreadsheet().getId();
var sheet = SpreadsheetApp.openById(id).getActiveSheet();
var data = sheet.getDataRange().getValues();
// get headers
var headers = data[0];
var emailOpened = headers.indexOf('status') + 1;
// declare the variable for the correct row number
var currentRow = 2;
// iterate through the data, starting at index 1
for (var i = 1; i < data.length; i++) {
var row = data[i];
var email = row[0];
if (emailToTrack === email) {
// update the value in sheet
sheet.getRange(currentRow, emailOpened).setValue('opened');
break;
}
currentRow++;
}
}
它适用于独立文件,但不适用于插件脚本项目。有没有办法使用应用程序脚本追踪发送电子邮件?对此问题的任何帮助将不胜感激。谢谢
解决方案
我已经解决了这个问题。我稍微更改了代码并创建了一个新草稿,因为现有草稿中添加了多个内联图像。
变化就在这里
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('Email_Status');
经过这一些更改后,我将其部署为新的 webapp 并开始工作。感谢您的贡献
推荐阅读
- php - 如何处理 AWS-cognito NEW_PASSWORD_REQUIRED 挑战
- c++ - 布尔值对位域的优势
- angular - 为什么我的 HTTP POST 响应出现错误?
- amazon-web-services - 将 4 TB CSV 文件传输到 Amazon (AWS) 的首选 Internet 连接
- android - CardView 之间的空间随着 cardElevation 的增加而增加
- azure - azure_rm_resourcegroup 在 azure cloud shell 中工作,但在本地不工作
- c++ - 形成整数的三元组/四元组并删除重复项
- c++ - 在另一个 C++ 中调用一个类的方法
- csv - 了解日期时间、Tableau 的 OUTER JOIN
- google-apps-script - 将数据从工作表中的特定单元格复制到另一个工作表