GASからBacklog apiで情報取得してVueで表示

GASからBacklog apiで情報取得してVueで表示:


GASからBacklog apiで情報取得してVueで表示


html表示するGASの部分

function doGet() { 
  var htmlOutput = HtmlService.createTemplateFromFile("index").evaluate(); 
  htmlOutput 
    .setTitle('GAS+Vue.js') 
    .addMetaTag('viewport', 'width=device-width, initial-scale=1') 
  return htmlOutput; 
} 


html表示部分(index.html)

<!DOCTYPE html> 
<html> 
  <head> 
    <base target="_top"> 
    <?!= HtmlService.createHtmlOutputFromFile('css').getContent(); ?> 
  </head> 
  <body> 
    <div id="app"> 
      <h2>{{ tocTitle }}</h2> 
      <p>{{ tocDescription }}</p> 
      <ol> 
        <li v-for="list in lists"><a :href="list[1]">{{ list[0] }}</a> 
          <span>{{list[1]}}</span> 
          <span>{{list[2]}}</span> 
          <span>{{list[3]}}</span> 
          <span>{{list[4]}}</span> 
          <span>{{list[5]}}</span> 
          <span>{{list[6]}}</span> 
          <span>{{list[7]}}</span> 
          <span>{{list[8]}}</span> 
        </li> 
      </ol> 
    </div> 
    <?!= HtmlService.createHtmlOutputFromFile('js').getContent(); ?> 
  </body> 
</html> 


vueの部分 .js

<script src="https://cdn.jsdelivr.net/npm/vue@2.5.17/dist/vue.js"></script> 
<script> 
google.script.run.withSuccessHandler(initializeVue).getSpreadsheetValues(); 
 
function initializeVue(values){ 
  values.shift(); 
 
  new Vue({ 
    el: '#app', 
    data: { 
      tocTitle: 'Backlog', 
      tocDescription: 'hogehoge', 
      lists: values 
    } 
  }); 
} 
</script> 


GASバックログapi呼び出し部分

function myFunction() { 
  var space_id   = 'bokeboek'; 
  var api_key    = "hogehogheogeho" 
  var response   = UrlFetchApp.fetch("https://"+space_id+".backlog.jp/api/v2/issues?apiKey="+api_key); 
 
  if (response.getResponseCode() != 200) { 
      return false; 
  } 
 
  var spread_sheet_id   = 'XXXXXXXXX'; 
    var target_sheet_name = 'hoge' 
    var target_sheet      = SpreadsheetApp.openById(spread_sheet_id).getSheetByName(target_sheet_name); 
 
  //取得 
  var issue_list = JSON.parse(response.getContentText()); 
  Object.keys(issue_list).forEach(function(id, idx) { 
    const issue = issue_list[id] 
    const row = idx + 2 
    target_sheet.getRange(row, 1).setValue(issue.issueType.name) 
    target_sheet.getRange(row, 2).setValue(issue.summary) 
    target_sheet.getRange(row, 3).setValue(issue.assignee ? issue.assignee.name : '') 
    target_sheet.getRange(row, 4).setValue(issue.status.name) 
    target_sheet.getRange(row, 5).setValue(issue.priority.name) 
    target_sheet.getRange(row, 6).setValue(issue.created) 
    target_sheet.getRange(row, 7).setValue(issue.dueDate) 
    target_sheet.getRange(row, 8).setValue(issue.updated) 
    target_sheet.getRange(row, 9).setValue(issue.createdUser.name) 
  }) 
} 
 

コメント

このブログの人気の投稿

投稿時間:2021-06-17 22:08:45 RSSフィード2021-06-17 22:00 分まとめ(2089件)

投稿時間:2021-06-20 02:06:12 RSSフィード2021-06-20 02:00 分まとめ(3871件)

投稿時間:2021-06-17 05:05:34 RSSフィード2021-06-17 05:00 分まとめ(1274件)