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];
}
  • GAS에서 스프레드 시트를 조작하는 자신의 모범 사례

  • 시트의 모든 데이터 얻기



    시트의 마지막 행과 열은 각각 getLastRow , getLastColumn 함수에서 얻을 수 있습니다.
    이번에는 열 수가 2 열로 고정되므로 2 ~ 마지막 행과 1 ~ 2 열의 범위를 가져옵니다.
      // 変換表を全て取得
      var tableValues = sheetTable.getRange(2,1,sheetTable.getLastRow(),2).getValues();
    
  • Google Apps Script 시트의 모든 값을 다른 시트에 복사

  • 문자열 변환



    문자열 변환에 replace 라는 함수가 있습니다만, 이것이라고 하면 치환원의 캐릭터 라인이 복수 있는 경우에 최초의 하나 밖에 변환해 주므로, 이하의 방법으로 치환합니다. 이것이라면 모두 대체됩니다.
      for (var i in tableValues) {
        fromStr = fromStr.split(tableValues[i][0]).join(tableValues[i][1]);
      }
    
  • 【JavaScript】 검색 문자열을 완전히 바꾸는 방법 【replaceAll】

  • 3. 시트에서 쉽게 스크립트를 호출할 수 있도록



    여기의 단계("스프레드시트에서 도형 만들기", "도형에 스크립트 연결")에 따라 버튼을 설치합니다.
  • 스프레드시트에 도형으로 버튼을 만들고 GAS 실행 및 트리거를 사용하여 메뉴 추가

  • 끝에



    이번에 처음으로 스프레드시트를 GAS로 조작해 보았습니다만, javascript나 php등의 프로그래밍 환경을 준비하지 않아도, 브라우저만으로 이것만의 일을 할 수 있는 것은 편리하다고 느꼈습니다.
    여러분도 사용해보세요!

    참고


  • GAS에서 스프레드 시트를 조작하는 자신의 모범 사례
  • Google Apps Script 시트의 모든 값을 다른 시트에 복사
  • 【JavaScript】 검색 문자열을 완전히 바꾸는 방법 【replaceAll】
  • 스프레드시트에 도형으로 버튼을 만들고 GAS 실행 및 트리거를 사용하여 메뉴 추가
  • 좋은 웹페이지 즐겨찾기