2014-04-03 3 views
0

스프레드 시트에서 추출한 표와 차트가있는 사람들의 목록으로 전자 메일을 보내고 싶습니다.메일 스프레드 시트 데이터

이렇게하는 것은 수동으로 간단합니다. 범위를 클립 보드로 복사하고 메시지 편집기에 붙여 넣습니다. 차트와 유사합니다. 그러나 제 응용 프로그램에는 여러 차트와 범위가 필요하므로 처리 시간이 오래 걸리며 오류가 발생하기 쉽습니다. 다음과 같이

나는 메시지를 구축하려고 노력 해요 : 코드의 복잡성이 같은 간단한 작업을 수행 할 수 있습니다 자신의 접근 방식

function makeMail(){ 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var dataTable = ss.getSheetByName("calc") 
        .getRange("B116:I125") 
        .getDataTable(true); 
    var sData = ss.getSheetByName("Results")      
       .getRange("A5:F22") 
       .getValues(); 

    var chartImage = Charts.newLineChart() 
         .setTitle('Top Teams') 
         .setDataTable(dataTable) 
         .build() 
         .getAs('image/png'); //get chart as image 

    var mB = "<h2> Testing Mail </h2>"; 
    mB += "<style> table,th,td { border:1px solid black;} </style>"; 
    mB += " <table> <tr> <th>Team Name</th> <th> Owners </th> <th>This Week$</th>" 
    mB += " <th>Rank</th><th>YTD pts</th><th>YTD Rank</th></tr></tr>"; 
    for (var i=0;i<6;i++){ 
    mB += "<td> " + sData[2][i] + "</td>"; 
    mB += "</tr>"; 
    } 
    mB += "</table>"; 
MailApp.sendEmail({ 
    to: "[email protected]", 
    subject: "Chart", 
    htmlBody: mB, 
    inlineImages:{ 
    chartImg: chartImage 
    } 
}); 
} 

주요 문제와 방식에 문제가 보인다 HTML은 메일러에 의해 렌더링됩니다. 표의 스타일 태그는 효과가 없습니다.

이 문제에 접근하는 더 좋은 방법이 있습니까?

+0

스타일을 테이블 태그 자체에 삽입해야합니다 (예 :

및 색상, 패딩, 배경에 대한 태그에 다시 삽입해야 함). 더 간단한 해결책 없음 - | 또한 사용할 수있는 태그에는 몇 가지 제한 사항이 있습니다. 여기에 UiApp에 대한 참조가 있지만 html 메시지와 거의 같습니다 (https://developers.google.com/apps-script/). ui_supportedStyles –

+0

Mogsdad의이 흥미로운 글을 참고하십시오 : http://stackoverflow.com/questions/20570361/how-to-use-css-in-google-scripts-specifically-to-design-hyperlink-button/20572401#20572401 –

+0

@ Serge는 그것을 얻었다. 위의 내용을 답변으로 게시하면 대답으로 표시됩니다. – MalcL

답변

1

메모에 이미 지정된 스타일 외에도 미리 만든 차트를 사용하고 필요에 따라 범위를 변경하여 속도를 높일 수 있습니다. 명명 된 범위를 사용하면 코드를 수정하는 대신 스프레드 시트에서 범위를 편집하여 읽기 및 유지 관리를 쉽게 할 수 있습니다.

+0

나는 명명 된 범위에 대한 의견에 동의합니다. 대화 형으로 작성된 차트를 사용해 보았습니다. 오래된 시트는 횡설수설하고 새로운 시트는 아무것도 전달하지 못합니다. 테스트를 위해 다음을 사용했습니다 : – MalcL

+0

다음 테스트를 사용했습니다 : function sendChart() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var chartsheet = ss.getSheetByName ("결과"); var chart = chartsheet.getCharts(); var chartImage = chart [0] .getAs ("image/png"); MailApp.sendEmail ({행 "[email protected]" 제목 : "테스트 차트" 에서는 HTMLBody "

" inlineImages { chartImg : chartImage }}); } – MalcL

+0

나는 돌아가서 이것을 다시 보았다. 차트를 전자 메일로 보내려면 "게시"해야한다는 것을 알았습니다. 이제는 "새로운"시트에서 작동합니다. – MalcL

관련 문제