google 양식에서 마크다운 기법으로 변환

무엇을 했는가



Google Apps Script (GAS)를 사용하여 google 양식에서 마크 다운 표기법 문서 생성

참고로 한 사이트



Spreadsheet Service → GAS를 사용하여 스프레드 시트를 제어하기 위해
문서 서비스 → GAS를 사용하여 문서 만들기

기능별 설명



스프레드시트 UI



onOpen()에서 도구 등의 열에 "markdown 생성"이라는 이름으로 추가됨
showSidebar()는 "markdown 생성"을 누를 때 표시되는 "생성"을 누르면 표시되는 내용

UI.gs
function onOpen() {
  var ui = SpreadsheetApp.getUi();           // Uiクラスを取得する
  var menu = ui.createMenu('markdownの生成');  // Uiクラスからメニューを作成する
  menu.addItem('生成', 'showSidebar');  // メニューにアイテムを追加する
  menu.addToUi();                            // メニューをUiクラスに追加する
}
function showSidebar() {
  var htmlOutput = HtmlService.createHtmlOutputFromFile('index');
  SpreadsheetApp.getUi().showSidebar(htmlOutput);
}

생성을 누를 때 표시되는 내용



button을 onclick하면 GAS측에서 설정한 coding이라는 함수가 호출된다.

index.html
<!DOCTYPE html>
<html>
  <head>
    <link rel="stylesheet" href="https://ssl.gstatic.com/docs/script/css/add-ons1.css">
    <base target="_top">
  </head>
  <body>
    <script>
      function get_user(){
        var user = document.getElementById("target").value;
        return user;
      }
    </script>
    <label>出力したい列の行数</label><br>
    <input type="text"name="target" id="target" placeholder="(例)3">
    <button onclick="google.script.run.coding(get_user())">送信</button>
  </body>
</html>

coding 함수에서 make_markdown을 호출하고 return에서 반환하는 것은 insert_data로 만든 문서의 URL을 반환합니다.
그것을 alert하면 URL이 화면에 표시됩니다.

make_markdown.gs
function insert_data(text,info){
  var myFolder = DriveApp.getFolderById("FolderID");
  var document = DocumentApp.create(info);
  document.getBody().setText(text);
//  docファイルの移動
  var docFile = DriveApp.getFileById(document.getId());
  myFolder.addFile(docFile);
  // Rootの所属を外す
  DriveApp.getRootFolder().removeFile(docFile);
  return(docFile.getUrl());
}

function make_markdown(target){
  var sheet = SpreadsheetApp.openByUrl("https://docs.google.com/spreadsheets/d/Spreadsheet_ID");
  var s = sheet.getSheetByName("Sheet_name");
  var info = s.getRange(target,5).getValue()+":"+s.getRange(target,6).getValue();
  var text = "# 自己紹介\n";
  text = text+"名前:"+s.getRange(target,2).getValue()+"\n";

  if(!s.getRange(target,9).isBlank()){ // googleフォームの空白判定
     // 処理1
  }
  if(!s.getRange(target, 28).isBlank()){
     // 処理2
  }
  if(!s.getRange(target,11).isBlank()){
    // 処理3
  }
  if(!s.getRange(target,16).isBlank()){
    // 処理4
  }
  var doc = insert_data(text,info);
  return doc;
}
function coding(data){
 var ui = SpreadsheetApp.getUi();
 var url = make_markdown(Number(data));
 ui.alert(url); 
}

※ 주의점
- 문서를 만들 때 폴더를 지정할 수 없으므로 최상위 수준 아래에 파일이 생성됩니다.
- 파일을 이동하기만 하면 초기 위치와 공유되는 형태가 되므로 루트를 제거한다.

완제품



다른 사람도 사용할 수 있었기 때문에 UI를 설계.


실행이 완료되면 문서 URL이 표시됩니다.


문서로 이동하면 마크다운이 생성됩니다! !


무엇에 도움이 되는가?



ZENPEN~전국편 입생회~ 이라는 사이트를 운영하고 있으며, 그 중 하나의 콘텐츠로 편입 체험담 (Link) 이 존재한다.
게시 방법으로 google 양식을 채용하고 있으며, 거기에서 wordpress 기사에 원활하게 게시가 가능하게되었다.
일반적인 일로 할 수 있거나 할 것인가와 조금 의문은 남는다.

미래의 도전


  • 워드 프레스의 플러그인으로서 버튼 클릭으로 기사 투고까지 한다.

  • 마지막으로



    GAS나 프로그래밍을 이용해 자동화·효율화를 하고 싶다, 의뢰하고 싶은 분은 연락( 트위터 )을 주세요.

    좋은 웹페이지 즐겨찾기