Цель этого скрипта:
- Чтобы найти строку, которая соответствует сегодняшней дате (Работы)
- Совпадение ссылочного номера для поиска сайта
- Отправить письмо человеку, чтобы сказать, что его строка была перемещена (Работы)
- Возьмите указанный ряд и отправьте на соответствующий лист (Ошибки!)
Кажется, я столкнулся с каким-то беспокойством из-за моего следующего скрипта, я использовал Logger.log, чтобы попытаться найти проблему, но все они дают мне значения, которые я хочу! Однако скрипт продолжает выдавать ошибку «Координаты диапазона находятся за пределами размеров листа». Если я достану раздел, в котором эта ошибка помечена, и запустю его как независимый скрипт, он будет работать! Я не могу понять, почему он не работает при подключении к этому сценарию.
function livetestReady() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Pending Requests");
var datarange = sheet.getDataRange();
var lastrow = datarange.getLastRow();
var values = datarange.getValues();
var startRow = 2;
var currentDate = new Date();
var deBug = "andrew.sallis@rrd.com"
var valueToSend = ''
for (var i=lastrow;i>=startRow;i--) {
Logger.log("Locate")
var tempDate = values[i-1][4];
var d = new Date(tempDate);
Logger.log("d:"+d)
Logger.log("Today:"+currentDate)
if(Utilities.formatDate(d, "Europe/London", "EEE, MMM d, yyyy") == Utilities.formatDate(currentDate, "Europe/London", "EEE, MMM d, yyyy"))
{
Logger.log("Now Live: "+i)
var currentRow = values[i-1]
if(isDate(currentRow[10])) { var corDate = Utilities.formatDate(currentRow[10], "Europe/London", "MMM d, yyyy") } else {var corDate = currentRow[10]}
var findRef = currentRow[0]
var siteRef = "RQT"
if (Myindexof(findRef,siteRef) > -1) {
var valueToSend = "TEW - Requests";
} else {
var valueToSend = "BW - Requests";
};
var senderName = "CSM Request"
var replyEmail = "Do-Not-Reply@rrd.com"
var subject = "[NOTICE] Your CSM Request '"+values[i-1][0]+"' is now LIVE!.";
var sendTo = currentRow[2]
var message = "<p>A request which you are in control of has now gone live, it can now be found in the '"+valueToSend+"' tab</p>"
var csmRequest = '<p>'
+'<table border="1" width="1000" cellspacing="0" cellpadding="10">'
+'<tbody>'
+'<col width=500>'
+'<col width=500>'
+'<col width=500>'
+'<col width=500>'
+'<col width=500>'
+'<col width=500>'
+'<col width=500>'
+'<col width=500>'
+'<col width=250>'
+'<col width=750>'
+'<tr>'
+'<td colspan="2" align="center" bgcolor="#CCCCCC"><strong>Reference Number</strong></td>'
+'<td colspan="2" align="center" >'+currentRow[0]+'</td>'
+'</tr>'
+'<tr>'
+'<td align="center" bgcolor="#CCCCCC"><strong>Request Expiration Date</strong></td>'
+'<td align="center" bgcolor="#CCCCCC"><strong>Requested by</strong></td>'
+'<td align="center" bgcolor="#CCCCCC"><strong>Customer</strong></td>'
+'<td align="center" bgcolor="#CCCCCC"><strong>File Date</strong></td>'
+'</tr>'
+'<tr>'
+'<td align="center" >'+Utilities.formatDate(currentRow[6], "Europe/London", "EEE, MMM d, yyyy")+'</td>'
+'<td align="center" >'+currentRow[1]+'</td>'
+'<td align="center" >'+currentRow[8]+'</td>'
+'<td align="center" >'+corDate+'</td>'
+'</tr>'
+'<tr>'
+'<td align="center" bgcolor="#CCCCCC"><strong>Stream ID</strong></td>'
+'<td align="center" bgcolor="#CCCCCC"><strong>Batch ID</strong></td>'
+'<td align="center" bgcolor="#CCCCCC"><strong>Oracle Number</strong></td>'
+'<td align="center" bgcolor="#CCCCCC"><strong>Form Type</strong></td>'
+'</tr>'
+'<tr>'
+'<td align="center" >'+currentRow[11]+'</td>'
+'<td align="center" >'+currentRow[12]+'</td>'
+'<td align="center" >'+currentRow[14]+'</td>'
+'<td align="center" >'+currentRow[15]+'</td>'
+'</tr>'
+'<tr>'
+'<td align="center" bgcolor="#CCCCCC"><strong>Comments</strong></td>'
+'<td colspan="3" align="center" >'+currentRow[16]+'</td>'
+'</tr>'
+'</tbody>'
+'</table>'
var urlToDoc = "https://docs.google.com/spreadsheets/d/1ddfQROKL1oROBFEZWrOFpBOZSDpeiRwkaggmUbqV7jg/edit#gid=0"
var disclaimer = "<p>"
+"<p>No extra action is required, the hardwork has been done for you!</p>"
+"<p><a href='"+urlToDoc+"'>Click here to be taken to the sheet.</a></p>"
+"<p>This is an auto-generated email, please do not reply to this.</p>";
var disclaimer2 = "<p>"
var testDisc = "<p><strong>This document is currently in a test phase and the information portrayed may not be fully accurate.</strong>.</p>";
Logger.log("Subject: "+subject)
MailApp.sendEmail({
name: senderName,
replyTo: replyEmail,
to: sendTo+","+deBug,
cc: "",
subject: subject,
htmlBody: message+csmRequest+disclaimer+testDisc,
});
Logger.log("Send to: "+valueToSend)
Logger.log("Get from: "+sheet.getSheetName())
var range = sheet.getRange(i,1,1,17)
var targetSheet = ss.getSheetByName(valueToSend)
var targetRow = targetSheet.getLastRow()+1;
Logger.log(targetRow)
targetSheet.getRange(targetRow,1,1,17).setValues(range.getValues());
range.clearContent()
var sortLive = targetSheet.getRange(3,1,targetSheet.getLastRow()-1,targetSheet.getLastColumn())
sortLive.sort([{column: 7, ascending:true},{column: 23, ascending:true}])
}
var sortPend = sheet.getRange(3,1,sheet.getLastRow()-1,sheet.getLastColumn())
sortPend.sort([{column: 5, ascending:true},{column: 23, ascending:true}])
}
}
Это код, вызывающий проблему
Logger.log("Send to: "+valueToSend)
Logger.log("Get from: "+sheet.getSheetName())
var range = sheet.getRange(i,1,1,17)
var targetSheet = ss.getSheetByName(valueToSend)
var targetRow = targetSheet.getLastRow()+1;
Logger.log(targetRow)
targetSheet.getRange(targetRow,1,1,17).setValues(range.getValues());
range.clearContent()
- Logger.logs показывает правильные значения, необходимые
- Значение i является правильной строкой
Если я запускаю этот раздел независимо, без остального кода, он работает!
Где я ошибся?
Заранее спасибо.