GAS의 getAs가 어느 날 갑자기 에러를 토하게 되어 현재도 미해결
4623 단어 GoogleAppsScript버그
요약
getAs
잠재적 인 버그가있는 패턴어느 날 눈치챘다
당사에서는 매일 그래프화한 KPI를, GAS를 이용해 Slack에 통지하고 있다.
그 그래프는 특정 채널·특정 시간에 자동 투고되는데…
게시되지 않은, 그렇다면 ......?
확인해 보니 일주일 약 정도 투고되지 않았다.
당황해 GAS쪽을 확인해 본다… … 역시 에러를 토하고 있었다.
これらの列は範囲外にあります。 at myFunction(コード:100)
당연히 낯선 오류였다. 해당 행을 보러 간다.
// sample code
const sheet = SpreadsheetApp.getActiveSheet();
const range = sheet.getRange("A1:B13");
const chart = sheet.newChart().addRange(range).asComboChart().build();
const chartImage = chart.getAs('image/png')
※ 화상의 데이터는 샘플입니다.
여러가지 시행착오한 결과,
setPostion()
라는 함수를 추가하는 것으로 잘 되는 것을 알 수 있었다. 이 함수는 생성한 그래프를 어딘가의 시트에 삽입하고 싶을 때 그 셀 위치를 정하는 함수이다. 원래 코드에서는 Slack에 그래프 이미지를 보낼 뿐이었기 때문에 이용하지 않았다. // 修正後
const sheet = SpreadsheetApp.getActiveSheet();
const range = sheet.getRange("A1:B13");
const chart = sheet.newChart().addRange(range).asComboChart().setPostion(1,3,0,0)build();
const chartImage = chart.getAs('image/png')
이 함수를 추가하면
getAs()
에서 오류가 발생하지 않습니다.그러나
setPostion()
가 없어도 지금까지 안정적으로 실행되고 있었고, 왜 갑자기 에러가 되었을 것이다.그것만이 아니다. 투고 후 그래프 이미지가 보기 좋지 않다.
위의 코드는 샘플을 위해 간소화하여 기재했지만, 실제 코드는 그래프의 외관을 좋게 하기 위해, 여러가지 설정을 더하고 있었던 것이다. 그런데
setPostion()
를 추가하면 그 설정이 전혀 효과가 없어져 버리는 것 같았다.setPostion()의 추가로 에러는 나오지 않게 되었지만…
Slack에 그래프 이미지를 투고할 수 있어도, 외형이 너무 나쁘기 때문에 사용하는 것이 되지 않는다.
여러가지 조사한 바, 해외에서도 같은 사례가 발생하고 있는 것 같고, google의 issuetracker에서 같은 논의가 되고 있었다.
결론으로서는 아마 GAS의 잠재 버그일지 모르지만, google로부터의 공식적인 대답은 없고, 모두 엄청나게 살고 있었다.
논의의 끝에는 이런 문장이 있었다…
마지막은 신 부탁인가…
Reference
이 문제에 관하여(GAS의 getAs가 어느 날 갑자기 에러를 토하게 되어 현재도 미해결), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Hikaru_nullpo/items/861493c3497fbde6d456텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)