【发布时间】:2016-06-23 15:53:43
【问题描述】:
我在应用脚本中生成了以下代码,以便在用户更改谷歌电子表格中的某些值时自动发送电子邮件。
然后我通过更改“当前项目的触发器”将我的脚本连接到谷歌电子表格。例如:
代码运行良好。 唯一的问题是用户在google电子表格的任何单元格(例如:B1、B12、C12等)中插入/编辑新值后,它会触发我的脚本,然后光标会总是自动移动到单元格 A1,这很烦人。
我最好的猜测(我可能是错的)是它作为“信号”返回单元格 A1,因为它每次都运行完应用脚本代码?
我能做些什么来阻止这种自动光标移动的事情吗?我需要更改“当前项目的触发器”吗?
function PODTool() {
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
SpreadsheetApp.setActiveSheet(spreadsheet.getSheets()[0]);
var sheet = spreadsheet.getActiveSheet();
var lastRow = sheet.getLastRow();
var startRow = 2;
var range = sheet.getRange(2,7,lastRow-startRow+1,1 );
var numRows = range.getNumRows();
var LinksToPODForm = range.getValues();
var rangeColumnReadyToSendEmail =sheet.getRange(2,9,lastRow-startRow+1,1);
var sendEmailOrNot = rangeColumnReadyToSendEmail.getValues();
var warning_count = 0;
var msg = "";
// Loop over the values
for (var i = 0; i <= numRows - 1; i++) {
var EachLinkValue = LinksToPODForm[i][0];
if (EachSendEmailOrNotValue=="yes" && sheet.getRange(i+2,10).getValue()=='Email not Sent' &&EachEmailRecipient=="Someone"){
var BillingOfLadingShowingInEmailNotification = Billing_of_lading_number[i][0];
msg = msg +"Requester: "+EachEmailRecipient+"
warning_count++;
var subject ="Billing of Lading: "+BillingOfLadingShowingInEmailNotification;
sheet.getRange(i+2,10).setValue('Sent');
var recipient = "xxx@gmail.com";
}
if(warning_count) {
MailApp.sendEmail(recipient, subject,msg)
}
};
感谢任何建议!
【问题讨论】:
-
我会将这个:
var sheet = spreadsheet.getActiveSheet();更改为var sheet = spreadsheet.getSheets()[0];并删除这一行:SpreadsheetApp.setActiveSheet(spreadsheet.getSheets()[0]);试试这个并回复评论。 -
它就像一个魅力!只是想知道“setActiveSheet”有什么问题吗?谢谢!!!
-
我添加了我的评论作为答案。我认为“setActiveSheet”可能正在将活动单元格移动到 A1
-
我接受了你的回答!谢谢你的帮助!
标签: google-apps-script google-sheets cursor cursor-position