1

Google 스프레드 시트에서 일부 값을 변경하면 자동으로 이메일을 보내도록 앱 스크립트에 다음 코드를 생성했습니다.커서가 자동으로 Google 스프레드 시트에서 앱 스크립트와 함께 각 편집 후

그런 다음 "현재 프로젝트의 트리거"를 변경하여 Google 스프레드 시트에 내 스크립트를 연결했습니다. 예컨대 :

my trigger.jpg

코드는 잘을하고있다. 유일한 문제는 사용자가 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 = "[email protected]"; 
    } 

    if(warning_count) { 
    MailApp.sendEmail(recipient, subject,msg) 
    } 

}; 

Thx()`VAR 시트 = spreadsheet.getActiveSheet :

var sheet = spreadsheet.getActiveSheet(); 

에 :

var sheet = spreadsheet.getSheets()[0]; 

및이 줄을 삭제합니다

+0

내가 변경할 것을 ; 'var sheet = spreadsheet.getSheets() [0];'이 줄을 지우고 :'SpreadsheetApp.setActiveSheet (spreadsheet.getSheets() [0]);'그것을 시도하고 commen하십시오. 다시. –

+0

그것은 매력처럼 작동합니다! 그냥 뭔가 "setActiveSheet"건 잘못 생각해? 고마워!!! –

+0

답변으로 내 의견을 추가했습니다. 제 생각에 "setActiveSheet"가 활성 셀을 A1으로 옮기는 것 같습니다 –

답변

1

나는 이것을 바꿀 것

SpreadsheetApp.setActiveSheet(spreadsheet.getSheets()[0]);