LANG SELRCT

コードを書く場所

2019年7月17日水曜日

freee APIでリフレッシュトークンを使いたい


freee APIのアクセストークンの有効期間は24時間です。
有効期間をすぎるとそのアクセストークンは使えなくなります。

リフレッシュトークンでアクセストークンを更新することで、継続して利用することができるので、その更新手順を書いていきます。

以下2つのSTEPで書いていきます。

  1. リフレッシュトークンを取得する
  2. リフレッシュトークンを使って更新する



STEP1 リフレッシュトークンを取得する


まずは、freee APIでアクセストークンを取得してみるでアクセストークンを取得すると、このような結果が返ってきます。

{
  "access_token":"アクセストークン",
  "token_type":"bearer",
  "expires_in":86400,
  "refresh_token":"リフレッシュトークン",
  "scope":"read write default_read",
  "created_at":作成日時
}

今回はこの中の「refresh_token」を使います。


STEP2 リフレッシュトークンを使って更新する


スクリプトエディタに以下のコード.gsを貼り付けて
client_id, client_secret, refresh_tokenをそれぞれ貼り付けて保存します。



コード.gs
var client_id = 'Client IDを貼り付けます';
var client_secret = 'Client Secretを貼り付けます';

var refresh_token = 'リフレッシュトークンを貼り付けます';

/************************************
手順
0. 事前にアクセストークン, リフレッシュトークンを取得しておく
1. 上部の1,2行目にアプリストアのClient ID, Client Secretを貼り付ける
2. 上部の3行目にアクセストークンと一緒に取得したrefresh_tokenを貼り付ける
3. refreshTokens()を実行する
4. 上部メニューの「表示」>「ログ」に更新されたトークン情報が表示される

↓以下のコードは触らなくてOK
************************************/

function refreshTokens() {// アクセストークンを更新してログに出す
  var response = runRefresh();
  Logger.log(response);
}


var token_url = 'https://accounts.secure.freee.co.jp/public_api/token';

function runRefresh() {// refresh_tokenを使って更新したトークン情報を返す
  var payload = {
    'grant_type': 'refresh_token',
    'client_id': client_id,
    'client_secret': client_secret,
    'refresh_token': refresh_token
  }
  
  var options = {
    'method': 'post',
    'contentType': 'application/x-www-form-urlencoded',
    'payload': payload
  }
  var response = UrlFetchApp.fetch(token_url, options);
  return response;
}




「実行」>「関数を事項」>「refreshTokens」で実行します。


実行後、「表示」>「ログ」を開きます


access_tokenとrefresh_tokenが更新されたログが出力されます。


補足


次回refreshTokens()を実行する時は、更新後のログに出力されたrefresh_tokenを使います。


古いrefresh_tokenを使うとこのようなエラーが出ます。


関連記事

freee APIでアクセストークンを取得してみる


参考

アクセストークンを取得する
https://app.secure.freee.co.jp/developers/tutorials/3

freee APIでアクセストークンを取得したい


Google Apps Scriptで取得する手順を書いていきます。


公式のサイトでは外部ライブラリを使っていますが、この記事ではライブラリを使わない方法でアクセストークンを取得してみます。


大きく3つのSTEPで書いていきます。

  1. アプリの「Client ID」「Client Secret」を取得する
  2. コールバックURLをGASで作成する
  3. 連携してアクセストークンを取得する




STEP1 アプリの「Client ID」「Client Secret」を取得する


https://app.secure.freee.co.jp/ を開いて「開発者ページ」をクリックします。



「今すぐアプリを作成」をクリックします。



①「アプリ名」を決めます
②「概要」を入力します
③「利用規約」をチェックします
④「作成」をクリックします


「Client ID」「Client Secret」が表示されます。



STEP2 コールバックURLをGASで作成する


Google Apps Scriptの新規プロジェクトを作成します。
https://script.google.com/macros/create


このような画面が表示されます。


function myFunction() {〜}は削除して、以下のコード.gsをコピーして貼り付けます。


コピーして貼り付けるコード

コード.gs
var client_id = 'Client IDを貼り付けます';
var client_secret = 'Client Secretを貼り付けます';


/************************************
手順
1. 上部の1,2行目にアプリストアのClient ID, Client Secretを貼り付ける
2. 上部メニューの「公開」>「ウェブアプリケーションとして導入」 >「アプリケーションにアクセスできるユーザー」を全員(匿名ユーザを含む)で「更新」する
3. 「現在のウェブ アプリケーションの URL」をアプリストアの「コールバックURL」に貼り付けて「下書き保存」
4. 「Webアプリ認証用URL」をコピーしてブラウザの新規タブで開いて認証を行うとブラウザにアクセストークンが返ってくる

↓以下のコードは触らなくてOK
************************************/

function doGet(e) {// Web認証用URLを開いたときに動く処理
  var response = getAccessToken(e);
  return ContentService.createTextOutput(response);// ブラウザに表示する
}

var token_url = 'https://accounts.secure.freee.co.jp/public_api/token';

function getAccessToken(e) {// 認可コードを利用してトークン情報を取得して返す
  var code = e['parameter']['code'];
  var payload = {
    'grant_type': 'authorization_code',
    'client_id': client_id,
    'client_secret': client_secret,
    'code': code,
    'redirect_uri': ScriptApp.getService().getUrl()
  }
  
  var options = {
    'method': 'post',
    'contentType': 'application/x-www-form-urlencoded',
    'payload': payload
  };
  var response = UrlFetchApp.fetch(token_url, options);
  return response;
}




「ファイル」>「保存」を選択します。


任意の「プロジェクト名」を入力して「OK」をクリックします。


client_idに「Client ID」、client_secretに「Client Secret」の値を入れて保存します。


「公開」>「ウェブアプリケーションとして導入」をクリックします。


「アプリケーションにアクセスできるユーザー」>「全員(匿名ユーザーを含む)」>「導入」



「許可を確認」をクリックします。


自分のアカウントを選択します。


「詳細」をクリックします。


下の方にプロジェクト名のリンクが表示されるのでクリックします。


「許可」をクリックします。


「現在のウェブアプリケーションのURL」が表示されます。




STEP3 連携してアクセストークンを取得する


コールバックURLにGASで作ったウェブアプリのURLを貼り付けて「下書き保存」します。


「Webアプリ認証用URL」をコピーしてブラウザの新規タブで開きます。



「許可する」をクリックします。


ブラウザにaccess_tokenなどが表示されます。


access_tokenの有効期間は24時間です。
refresh_tokenでaccess_tokenを更新することができます。


参考

freee APIとは
https://support.freee.co.jp/hc/ja/articles/115000143186-freee-API%E3%81%A8%E3%81%AF

リファレンス
https://developer.freee.co.jp/docs/accounting/reference

スタートガイド
https://app.secure.freee.co.jp/developers/tutorials

2019年7月15日月曜日

JIRAでプロダクトバックログからスプリントバックログへ移動する


プロダクトバックログの中からスプリントバックログに課題を追加するとスプリントを開始できます

この記事ではエピックもバージョンもストーリーポイントも設定せずにとりあえずスプリントバックログに追加するところをやります



バックログのエリアから対象のスプリントに実行したい課題をドラッグ&ドロップします


ストーリー1,3,4,5をドラッグ&ドロップしてスプリントバックログに入れてみる

「スプリントを開始」の青いボタンをクリックして

「スプリント名」「期間」「開始日」「終了日」「スプリントの目標」を決めて「開始」をクリックするとスプリントが開始します


ボードの画面に自動で遷移します


スプリント結果を振り返るためには、エピックやバージョンやストーリーポイントを別途設定しておく必要があります


参考

アトラシアンにおける ふりかえり の方法
https://japan.blogs.atlassian.com/2015/01/retrospectives-atlassian/

アトラシアンにおける スプリント計画 の方法
https://japan.blogs.atlassian.com/2015/02/sprint-planning-atlassian/

ソフトウェア開発チーム向け アジャイルツール
https://www.atlassian.com/ja/software/jira/agile

スクラムバックログを使用する
https://ja.confluence.atlassian.com/jirasoftwarecloud/using-your-scrum-backlog-764478062.html

見積りとトラッキングの設定
https://ja.confluence.atlassian.com/jirasoftwarecloud/configuring-estimation-and-tracking-764478030.html

JIRAのスクラムプロジェクトでレポート機能を有効にする


「プロジェクト設定」をクリックします


「機能」をクリックして「レポート」の右端のボタンをクリックします


これでレポートが有効になります


参考

次世代ソフトウェア プロジェクトでのレポートの有効化
https://ja.confluence.atlassian.com/jirasoftwarecloud/reports-952607296.html

レポート
https://ja.confluence.atlassian.com/jirasoftwarecloud/reporting-764478415.html

アジリティ機能を有効にする
https://ja.confluence.atlassian.com/jirasoftwarecloud/enable-agile-features-945104930.html

JIRAのスクラムプロジェクトでプロダクトバックログを作成する


バックログの「+課題を作成」をクリックすると作成できます


左サイドの「+」をクリックして作成することもできます



JIRAの次世代プロジェクトでスクラムプロジェクトを作成する


「プロジェクトを作成」から「次世代プロジェクト」を選択します


①任意の「名前」を決めます
②アクセス範囲を決めます(この例では非公開)
③高度な設定でプロジェクトの「キー」にする文字列を決めます
④テンプレートから「スクラム」を選択します
※④は「テンプレートを変更」をクリックすると以下の画面が開くので
「スクラム」を「選択」します

そしてプロジェクトを「作成」します


するとプロジェクトが作成されてこの画面が開きます


参考

次世代プロジェクトの管理者向けクイックガイド
https://community.atlassian.com/t5/Jira-Software-articles/%E6%AC%A1%E4%B8%96%E4%BB%A3%E3%83%97%E3%83%AD%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E3%81%AE%E7%AE%A1%E7%90%86%E8%80%85%E5%90%91%E3%81%91%E3%82%AF%E3%82%A4%E3%83%83%E3%82%AF%E3%82%AC%E3%82%A4%E3%83%89/ba-p/948573

新しいJiraが今、始まる
https://japan.blogs.atlassian.com/2018/10/the-new-jira-begins-now/

次世代プロジェクトの利用を開始する
https://ja.confluence.atlassian.com/jirasoftwarecloud/get-started-with-next-gen-projects-945104903.html

次世代プロジェクトの管理
https://ja.confluence.atlassian.com/jirasoftwarecloud/manage-and-administer-next-gen-projects-942834582.html

JIRAのフィールドのメニューから何ができるか知りたい


ここでいうフィールドのメニューとは


「プロジェクト設定」をクリックします


左サイドの「フィールド」をクリックするとこの画面が開きます

この画面で何ができるのか触ってみた結果を書いていきます

①「アクション」



「フィールドを編集」を選択してみるとこの画面

右端の「アクション」から「編集」「非表示」「必須」「画面」の操作ができそう


左サイドのメニューを下にスクロールすると
「カスタムフィールド」
「フィールドの構成」
「フィールドの構成 スキーム」
が選択できるようだ


「別のスキームを使用」を選択してみるとこの画面


「追加」のリンクをクリックしてみるとこの画面


試しに「フィールドスキームテスト」という名前で追加してみるとこの画面


「すべてのフィールド設定スキーム」の リンクをクリックするとこの画面


「削除」リンクから開くこの画面で「削除」ボタンをクリックすると削除できる



②「Default Field Configuration」の右端のアクションアイコンをクリックしてみると

この画面が開きます

①の「アクション」から「フィールドを編集」を選択した画面と同じ


参考

フィールド設定スキームの設定
https://ja.confluence.atlassian.com/adminjiracloud/configuring-a-field-configuration-scheme-844500805.html

フィールド設定の追加、編集、削除
https://ja.confluence.atlassian.com/adminjiracloud/adding-editing-and-deleting-a-field-configuration-844500796.html

カスタム フィールドの追加、編集、削除
https://ja.confluence.atlassian.com/adminjiracloud/adding-editing-and-deleting-a-custom-field-776636410.html




JIRAの画面のメニューから何ができるか知りたい


ここでいう画面のメニューとは


「プロジェクト設定」をクリックします


左サイドの「画面」をクリックするとこの画面が開きます

この画面で何ができるのか触ってみた結果を書いていきます


①「アクション」


「画面の編集」を選択してみるとこの画面


右上の「課題タイプを画面スキームに関連付け」をクリックしてみるとこの画面
課題タイプ毎に画面スキームを設定できるようだ


「別のスキームを使用」を選択してみるとこの選択肢
課題タイプ画面スキームとプロジェクトを関連付けることができるようだ


②「KT: Kanban Default Screen Scheme」の鉛筆アイコンをクリックしてみると

この画面


右上「課題の操作を画面に関連付け」をクリックしてみるとこの選択肢

「課題操作」の選択肢は3つ
課題の作成時、編集時、表示時にどのフィールドを表示するか決めることができる
「画面スキーム」は表示するフィールドを決めた設定ファイル的なもの(と解釈)


③は②と同じ

違うのは
「バグ」という課題タイプに設定されている「画面スキーム」に対して
「課題の操作を画面に関連付け」するという点