2014-01-11 2 views
0

특정 셀의 값이 "예"인지 확인해야하는 Google 스프레드 시트 용 스크립트를 작성하고 있습니다. 그렇다면 그냥 끝나야합니다. 그렇지 않은 경우 여러 다른 셀의 내용이있는 전자 메일을 정의 된 주소에 보내고 지정된 셀에 "예"라고 써야합니다. 그러나 코드의 if 조건은 false로 평가해야하는 경우에도 항상 true로 평가됩니다. 스크립트는 지정된 셀에 "예"라고 쓰고 전자 메일을 보냅니다. 그러나 전자 메일에는 지정된 셀의 내용이 포함되어 있지만 순서는 모두 잘못되었습니다.변수에 셀 값 할당 실패

function sendNotification() { 

    var sheet = SpreadsheetApp.getActiveSheet(); 
    var dataRange = sheet.getRange(2,1,1,6); 
    var data = dataRange.getValues(); 
    var dateSubmitted = data[0]; 
    var dateDue = data[1]; 
    var url = data[2]; 
    var currentText = data[3]; 
    var newText = data[4]; 
    var emailSent = data[5]; 
    var test = 'Yes'; 
    var emailAddress = '[email protected]'; 
    var message = 'On ' + dateSubmitted + ' a colleague requested that ' + url + ' be changed to replace the text ' + currentText + ' with ' + newText + '. This change should be completed by ' + dateDue; 
    var subject = 'A website change has been requested'; 

    if (emailSent!=test) { // Prevents sending duplicates 
     MailApp.sendEmail(emailAddress, subject, message); 
     sheet.getRange(2,6).setValue(test); 
     // Make sure the cell is updated right away in case the script is interrupted 
     SpreadsheetApp.flush(); 
    } 
} 

관련 세포 (죄송합니다, 스크린 샷을 시도했지만 담당자가 너무 낮)은 다음과 같습니다 :

A2 : 1/11/14 B2 : 1/17/14 C2 여기 스크립트는 다음과 같습니다 www.google.com D2 : 로렘 입숨 E2는 : 슬픔은 미트에게 F2 앉아 :

토 월에 11 2014 0시 : 예

여기

는 전자 메일의 본문에 덤프 내용은 다음과 같습니다 00 GMT- 0500 (EST), Far Jan 17 2014 00:00:00 GMT-0500 (EST), www.google.com, Lorem ipsum, Dolor amit, 예 동료가 정의되지 않은 텍스트를 undefined로 바꾸기 위해 undefined를 변경하도록 요청했습니다. 이 변경 사항은 완료되지 않음으로 완료해야합니다.

광범위하게 검색했는데 두 가지 동작에 대한 설명을 찾지 못했습니다. 전자 메일 본문에 해당 값이 포함되어 있기 때문에 스크립트가 셀 범위의 값을 읽지 못하고 있다고 생각하지 않습니다. 그런 다음 다시 그 값들을 기다리고 있던 곳에서는 "정의되지 않은"상태로 떨어집니다.

+0

내가 그것을 알아 냈어. 배열을 제대로 만들었지 만 데이터 [#]가 행을 보았다는 사실을 설명하지 못했습니다. 따라서, 내 코드는 배열에 읽은 한 행을 모두 dateSubmitted에 덤프하고 다른 변수에는 아무 것도 할당하지 않았습니다. 이 문제를 해결하기 위해 변수 할당을 = data [0] [#]로 변경하여 각 셀에 하나의 특정 셀의 데이터를 가져 왔습니다. [이 페이지] (https://developers.google.com/apps-script/reference/spreadsheet/range?hl=en#getValues ​​()) 나를 똑바로 세웠습니다. – hwestgate

답변

0

getValues()은 2 차원 값 배열을 반환합니다.

시도 :

... 
var dateSubmitted = data[0][0]; 
var dateDue = data[0][1]; 
var url = data[0][2]; 
...