GCP/Apps Script

Apps Script로 Google Sheets의 sheets들 index(목차) 만들기

whistory 2023. 1. 13. 15:04
반응형

 

 

 

 

 


엑셀 인 Google Sheets 는

sheet를 계속 생성할 수 있다.

 

한 파일 안에 sheet 들을 목차 형식으로 빼고싶어졌다.

 

 

현재 개발중인 Google sheets의 sheet 들. 

 

 

 

 

일단, Google Sheets 의 sheet 이름들을 가져온다.

function getSheetsNameAndCreateIndex() {
  const sheet   = SpreadsheetApp.getActiveSpreadsheet();
  const sheets  = sheet.getSheets();

  for ( i in sheets ) {
    const sheetName = sheets[i].getName();
    console.log(sheetName);
  }
}

 

 

 

 

 

시트이름과, URL 링크를 목차라는 sheet 에 뿌려줘본다.

function getSheetsNameAndCreateIndex() {
  const sheet   = SpreadsheetApp.getActiveSpreadsheet();
  const sheets  = sheet.getSheets();

  let sheet_list = new Array();
  for ( i in sheets ) {
    const sheetName = sheets[i].getName();
    const sheetUrl  = `https://docs.google.com/spreadsheets/d/${sheet.getId()}/edit#gid=${sheets[i].getSheetId()}`;

    sheet_list[i]     = new Array(2);
    sheet_list[i][0]  = sheetName;
    sheet_list[i][1]  = sheetUrl;
  }
  console.log(sheet_list);

  const indexSheet = sheet.getSheetByName("목차");
  indexSheet.getRange(1,1,sheet_list.length, sheet_list[0].length).setValues(sheet_list);
}

 

 

 

 

URL이 주루룩 있으니 지저분하다.

HYPERLINK를 이용해 sheet를 이동할 수 있도록 해준다.

function getSheetsNameAndCreateIndex() {
  const sheet   = SpreadsheetApp.getActiveSpreadsheet();
  const sheets  = sheet.getSheets();

  let sheet_list = new Array();
  for ( i in sheets ) {
    const sheetName = sheets[i].getName();
    const sheetUrl  = `https://docs.google.com/spreadsheets/d/${sheet.getId()}/edit#gid=${sheets[i].getSheetId()}`;
    const link      = `=HYPERLINK("${sheetUrl}", "Link to Tab")`;

    sheet_list[i]     = new Array(2);
    sheet_list[i][0]  = sheetName;
    sheet_list[i][1]  = link;
  }
  console.log(sheet_list);

  const indexSheet = sheet.getSheetByName("목차");
  indexSheet.getRange(1,1,sheet_list.length, sheet_list[0].length).setValues(sheet_list);
}

반응형