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,它开始工作了。谢谢你的贡献

试试这个:

//var id = SpreadsheetApp.getActiveSpreadsheet().getId(); remove this
var sheet = SpreadsheetApp.openById(id);//change this by hardcoding the id

最新更新