0

여기 상황이 있습니다. 두 개의 시트가있는 스프레드 시트가 있습니다 : 'Sheet1'및 'Sheet2'. 둘 다 54 개의 행을 가진 세 개의 데이터 열을 가지고 있습니다. 하나의 EmbeddedChart에서 두 시트의 범위를 추가하려고합니다.다른 시트의 범위를 EmbeddedChart에 추가

function testplot(){ 
    var s = SpreadsheetApp.getActiveSpreadsheet(); 
    var degrees = s.getSheetByName('Sheet1').getRange('A1:A54'); //domain 
    var range1 = s.getSheetByName('Sheet1').getRange('B1:B54'); //header:'B1 SinA' 
    var range2 = s.getSheetByName('Sheet1').getRange('C1:C54'); //header:'C1 CosA' 
    var range3 = s.getSheetByName('Sheet2').getRange('B1:B54'); //header:'B2 SinA' 
    var range4 = s.getSheetByName('Sheet2').getRange('C1:C54'); //header:'C2 CosA' 
    var chartsheet = s.getActiveSheet(); 
    var chartbuilder = chartsheet.newChart() 
    .setChartType(Charts.ChartType.LINE) 
    .addRange(degrees) 
    .addRange(range1) 
    .addRange(range2) 
    .addRange(range3) 
    .addRange(range4) 
    .setOption('useFirstColumnAsDomain', true) 
    .setPosition(5,2,0,0) 
    .setOption('height',300) 
    .setOption('width',900) 
    .setOption('theme','maximized') 
    .setOption('pointSize',2) 
    .setOption('curveType','function') 
    var chart = chartbuilder.build(); 
    chartsheet.insertChart(chart); 
    } 

결과 차트 전용 'Sheet1의'범위을 보여줍니다 : 여기 내 코드입니다

enter image description here

이 차트는 모든 범위를 수동으로 추가 할 때 모습입니다 :

enter image description here

내가 뭘 잘못하고 있니?

미리 도움 주셔서 감사합니다.

답변

1

이것은 애플리케이션 스크립트에서 버그가 수 있도록 나타납니다, 나는 그것을 추적하는 문제를 제기했습니다

https://code.google.com/p/google-apps-script-issues/issues/detail?id=4026

문제는 수 있도록, 같은 경계가 범위에 관련이있는 것으로 보인다 해결 방법은 서로 다른 경계를 가지도록 범위를 상쇄 할 수 있습니다.

+0

답장을 보내 주셔서 감사합니다. @EricKoleda, 내가 뭘 분명히 놓치지 않았 음을 알았습니다. 해결 방법은 맞지만 실제 스프레드 시트에는 많은 시트가 있으며 동일한 범위의 모든 범위를 계획하고 있습니다. 모두 수동으로 전환하는 데 시간이 걸릴 것입니다. 이것에 시간을 할애 할 가치가 있습니까, 아니면 수정이 빨리 될 것이라고 가정하는 것이 합리적입니까? – Cronopio

+0

솔직히이 버그가 해결되기까지는 다소 시간이 걸릴 수 있습니다. 수식을 사용하여 모든 데이터를 하나의 시트로 병합 한 다음 그로부터 차트를 작성하는 것과 같은 다른 잠재적 인 해결 방법이 있습니다. –

+0

나는 비슷한 해결 방법을 찾고 있었지만 정직한 답변을 많이 주셔서 감사합니다! :) 그냥 순수한 호기심에서 : 차트 GUI를 사용하여 동일한 작업을 수동으로 수행 할 수 있습니다. 앱 스크립트 구현과의 차이점은 무엇입니까? – Cronopio

1

해결 방법이 될 수있다 :

var range1 = s.getSheetByName('Sheet1').getRange('B1:B54'); 
var range2 = s.getSheetByName('Sheet1').getRange('C1:C54'); 
var range3 = s.getSheetByName('Sheet2').getRange('B1:B55'); 
var range4 = s.getSheetByName('Sheet2').getRange('C1:C55'); 

그래프의 결과에 문제의 원인이 주위에 데이터를 이동하지 않고도 작업을 허용하지 않습니다 값의 범위를지나 확장.

+0

간단하고 효과적인 아이디어처럼 들리지만 팁 @ nwill001 덕분입니다! 지금 그것을 테스트하려고합니다. – Cronopio

관련 문제