Google 스프레드시트 + GAS에서 다른 시트 변환표를 기반으로 문자열 대체
11288 단어 spreadsheetgas
소개
프로젝트의 디버거의 사람에게, 「디버그 화면에서 나오는 출력이 영어만으로 알기 어렵기 때문에, 일본어로 변환하는 툴을 갖고 싶다. 영어와 일본어의 대응표는 준비하니까」라고 말해졌으므로, Google 스프레드 시트를 사용하여 실현해 보았습니다.
동작
이렇게 작동합니다.
변환 시트에 문자열을 입력하고(녹색 부분) 실행(파란 버튼)을 누르면
이러한 변환표 시트를 바탕으로
캐릭터 라인 치환해 출력합니다.
1. 스프레드시트 만들기
위의 이미지와 같이 다음 세 시트를 만듭니다.
변환 소스 시트
대체하려는 원래 문자열을 입력하는 시트
"변환 후"시트
대체 후 문자열을 출력하는 시트
(변환원과 같을 수도 있습니다. 레이아웃에 고민한 결과 나누었습니다)
변환 표 시트
문자열 치환시의 치환전, 치환후의 문자열의 조합의 표
2. GAS 스크립팅
Google App Script에서 메뉴의 '도구' → '스크립트 편집기'에서 스크립트를 만듭니다.
스크립트는 다음과 같은 느낌.
spreadsheet = null;
sheetMap = [];
function translate(){
var sheetFrom = _getSheetByName('変換元');
var sheetTo = _getSheetByName('変換後');
var rangeFrom = sheetFrom.getRange("B3");
var rangeTo = sheetTo.getRange("B3");
var sheetTable = _getSheetByName("変換表");
// 変換表を全て取得
var tableValues = sheetTable.getRange(2,1,sheetTable.getLastRow(),2).getValues();
var fromStr = rangeFrom.getValue();
for (var i in tableValues) {
fromStr = fromStr.split(tableValues[i][0]).join(tableValues[i][1]);
}
rangeTo.setValue(fromStr);
}
function _getSpreadSheet(){
if ( ! spreadsheet) {
spreadsheet = SpreadsheetApp.getActive();
}
return spreadsheet;
}
function _getSheetByName(name){
if ( ! sheetMap[name]) {
sheetMap[name] = _getSpreadSheet().getSheetByName(name);
}
return sheetMap[name];
}
포인트를 짜서 해설합니다.
API 함수 메모
GAS에 대해 알아보면 API를 호출하는 횟수가 많을수록 처리가 무거워진다고 했으므로 스프레드시트의 정보를 얻는 함수를 메모화하고 같은 처리를 2번째 이후에 할 경우는 API를 호출하지 않게 하고 있습니다. .
function _getSpreadSheet(){
if ( ! spreadsheet) {
spreadsheet = SpreadsheetApp.getActive();
}
return spreadsheet;
}
function _getSheetByName(name){
if ( ! sheetMap[name]) {
sheetMap[name] = _getSpreadSheet().getSheetByName(name);
}
return sheetMap[name];
}
시트의 모든 데이터 얻기
시트의 마지막 행과 열은 각각
getLastRow
, getLastColumn
함수에서 얻을 수 있습니다.이번에는 열 수가 2 열로 고정되므로 2 ~ 마지막 행과 1 ~ 2 열의 범위를 가져옵니다.
// 変換表を全て取得
var tableValues = sheetTable.getRange(2,1,sheetTable.getLastRow(),2).getValues();
문자열 변환
문자열 변환에
replace
라는 함수가 있습니다만, 이것이라고 하면 치환원의 캐릭터 라인이 복수 있는 경우에 최초의 하나 밖에 변환해 주므로, 이하의 방법으로 치환합니다. 이것이라면 모두 대체됩니다. for (var i in tableValues) {
fromStr = fromStr.split(tableValues[i][0]).join(tableValues[i][1]);
}
3. 시트에서 쉽게 스크립트를 호출할 수 있도록
여기의 단계("스프레드시트에서 도형 만들기", "도형에 스크립트 연결")에 따라 버튼을 설치합니다.
끝에
이번에 처음으로 스프레드시트를 GAS로 조작해 보았습니다만, javascript나 php등의 프로그래밍 환경을 준비하지 않아도, 브라우저만으로 이것만의 일을 할 수 있는 것은 편리하다고 느꼈습니다.
여러분도 사용해보세요!
참고
Reference
이 문제에 관하여(Google 스프레드시트 + GAS에서 다른 시트 변환표를 기반으로 문자열 대체), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/mkiken/items/926ce3a0293cbcd6c404텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)