
この記事では
- 無料で1on1ミーティングを行うためのシステム導入
- GoogleフォームとTrelloの連携方法
といったものを知ることができます
多数の画像を利用して解説していますので、PCが多少苦手な方でも問題なく1on1ミーティングのシステムを利用することができますよ
ただし前提条件として
- Googleのアカウント
- Trelloのアカウント
が必要です。Trelloのアカウントを持っていない方は
こちらをクリックして、まずはTrelloのアカウントを用意しましょう
では、さっそく作っていきましょう!
おおよその所要時間としては、10~20分程度で完成します
Trelloのボードをコピーする
ご自身で1on1ミーティング用のTrelloのボードを用意してもらってもいいのですが、
せっかくなのでコピーしちゃって楽しちゃいましょう
コピー用のTrelloボードにアクセス
こちらをクリックして、コピー用のTrelloボードにアクセスしましょう
右上の…をクリック

もっと見るをクリック

ボードをコピーをクリック

これでボードのコピーが完了します
ユーザー名を調べる
右上のアイコンをクリック後、プロフィールと公開範囲をクリック

ユーザー名をメモ
このページに記載されているユーザー名は後ほど利用します。なので、メモしておきましょう
この際、ユーザー名を半角英数字で変更することも可能です

APIキーとAPIトークンの発行
発行用のページに移動
Trelloにログインをした状態で以下のURLをクリックしましょう
https://trello.com/1/appKey/generate
APIキーのメモ

APIトークンのメモ
許可をクリックした後にAPIトークンが表示されます
コピーしてメモっちゃってください


Googleフォームをコピー
では次にGoogleフォームをコピーしちゃいましょう
コピー用のGoogleフォームにアクセス
https://docs.google.com/forms/d/1EbW01JNe1qd3-WbKrh17FSSAPhu3j1Wu0Cq1LY_SyDQ/edit
右上の︙をクリック後、コピーを作成をクリック

適宜、名前を変更してコピーを作成

これでGoogleフォームのコピーができます
Apps Scriptを開く
次に先程コピーしたGoogleフォームから、スプレッドシートを開き、
そのスプレッドシートからApps Scriptを開きましょう
え、なんのことかわからない?
一旦何も考えずに以下の説明どおりに進めちゃいましょ!
先程コピーしたGoogleフォームの解答タブを開き、緑色のアイコンをクリック


スプレッドシートが開かれるので、拡張機能→Apps Scriptの順番でクリック


ボードIDの取得
さて、このApps Scriptというのはざっくばらんに言うと、プログラムを記載するための画面です
とはいえ、プログラムのコードを書くわけではないので安心して進めましょう
ほぼすべてコピーとペーストで完了できます
以下のコードをコピーしてペースト
// あらかじめ調べておいたユーザー名・APIキー・トークンを以下のようにメモ
// ユーザー名
var user_name = 'ユーザー名';
// APIキー
var api_key = 'APIキー';
// APIトークン
var api_token = 'APIトークン';
// ボードID
var board_id = ' ';
// リストID
var list_id = ' ';
↑ここまでをコピーしてペーストしたら、以下のような画面になります

以下のコードをコピーしてペースト
以下のコードをリストIDの下にコピペして、一度保存(Ctrl+S)してください
function getBoards() {
var url = 'https://api.trello.com/1/members/' + user_name + '/boards?key=' + api_key + '&token=' + api_token + '&fields=name';
Logger.log(UrlFetchApp.fetch(url, {'method':'get'}));
}

ボードIDというのを取得するための関数を実行
getBoardsという関数を選択して、実行しましょう
※繰り返しになりますが、実行前に一度保存(Ctrl+S)してくださいね

権限を確認をクリック

利用したいGoogleアカウントをクリック

詳細を表示をクリック→○○(安全ではないページ)に移動をクリック

許可をクリック

表示されたボードIDをコピーアンドペースト

リストIDの取得
以下のコードをコピーしてペースト
以下のコードをリストIDの下にコピペして、一度保存(Ctrl+S)してください
function getlists() {
var url = "https://trello.com/1/boards/" + board_id + "/lists?key=" + api_key + "&token=" + api_token + "&fields=name";
Logger.log(UrlFetchApp.fetch(url, {'method':'get'}));
}
リストIDというのを取得するための関数を実行

表示されたリストIDをコピーアンドペースト

Trelloにカードを追加するコードをコピーアンドペースト
さて、ほとんど終了ですが念のため問題なく進められたか最終チェックしましょう

ここまで問題なければ
- ユーザー名
- APIキー
- APIトークン
- ボードID
- リストID
の5つが埋まってます
おつかれさまです、もうすぐで終わりですよ
コードの終わりに以下のコードをコピペして、保存しましょう
// カード名の列番号
var title_column_no = 2;
// カード詳細説明の列番号
var description_column_no = 3;
var description_column_no2 = 3;
var description_column_no3 = 4;
var description_column_no4 = 5;
var description_column_no5 = 6;
var description_column_no6 = 7;
var description_column_no7 = 8;
var description_column_no8 = 9;
var description_column_no9 = 10;
var description_column_no10 = 11;
var description_column_no11 = 12;
var description_column_no12 = 13;
var description_column_no13 = 14;
var description_column_no14 = 15;
var description_column_no15 = 16;
var toukou_nichiji_no16 = 17;
function addTrelloCard() {
// 選択しているセルの開始行番号を取得
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var upper_left_cell = sheet.getActiveCell();
var start_row = upper_left_cell.getRow();
// 選択しているセルの行数を取得
var range = SpreadsheetApp.getActiveRange();
var rows = range.getNumRows();
// カード作成
for (var i = 0; i < rows; i++) {
var row = start_row + i;
var card_title = sheet.getRange(row, title_column_no).getValue();
var gyoumu1 = sheet.getRange(row, description_column_no2).getValue();
var gyoumu2 = sheet.getRange(row, description_column_no3).getValue();
var ningenkankei1 = sheet.getRange(row, description_column_no4).getValue();
var ningenkankei2 = sheet.getRange(row, description_column_no5).getValue();
var shin_shin1 = sheet.getRange(row, description_column_no6).getValue();
var shin_shin2 = sheet.getRange(row, description_column_no7).getValue();
var skill1 = sheet.getRange(row, description_column_no8).getValue();
var skill2 = sheet.getRange(row, description_column_no9).getValue();
var career1 = sheet.getRange(row, description_column_no10).getValue();
var career2 = sheet.getRange(row, description_column_no11).getValue();
var private1 = sheet.getRange(row, description_column_no12).getValue();
var private2 = sheet.getRange(row, description_column_no13).getValue();
var office1 = sheet.getRange(row, description_column_no14).getValue();
var office2 = sheet.getRange(row, description_column_no15).getValue();
var toukounichiji = sheet.getRange(row, toukou_nichiji_no16).getValue();
// var toukounjikan = sheet.getRange(row, toukou_nichiji_no17).getValue();
var url = 'https://api.trello.com/1/cards/?key=' + api_key + '&token=' + api_token;
var options = {
'method' : 'post',
'muteHttpExceptions' : true,
'payload' : {
'name' : card_title+ 'さんからの1on1の申込み',
'desc' : "【業務の進捗や進め方について聞きたいこと】\n=========\n" +gyoumu1 + '\n【予め伝えておきたいこと】\n=========\n' + gyoumu2 + "\n\n---" +
'\n【人間関係について聞きたいこと】\n=========\n' + ningenkankei1 + '\n【予め伝えておきたいこと】\n=========\n' + ningenkankei2 + "\n\n---" +
'\n【心身の状態について聞きたいこと】\n=========\n' + shin_shin1 + '\n【予め伝えておきたいこと】\n=========\n'+ shin_shin2 +"\n\n---" +
'\n【スキルや力の向上について聞きたいこと】\n=========\n' + skill1 + '\n【予め伝えておきたいこと】\n=========\n'+ skill2 +"\n\n---" +
'\n【今後のキャリアについて聞きたいこと】\n=========\n' + career1 + '\n【予め伝えておきたいこと】\n=========\n'+ career2 +"\n\n---" +
'\n【プライベートについて聞きたいこと】\n=========\n' + private1 + '\n【予め伝えておきたいこと】\n=========\n'+ private2 +"\n\n---" +
'\n【会社や部署の方針について聞きたいこと】\n=========\n' + office1 + '\n【予め伝えておきたいこと】\n=========\n'+ office2,
'due' : toukounichiji,
'idList' : list_id,
'urlSource' : ''
}
}
var response = UrlFetchApp.fetch(url, options);
}
}
コードの保存が終わったら、トリガーの設定をしましょう
トリガーの設定


はい、終了です!
おつかれさまでした
動作確認
動作確認のためフォームを送信してみましょう。
ミスがなければこれでフォームに送信された内容が
Trelloのボードに反映されますよ

参考元
八割くらい?いや、九割くらいは以下のノートを参考にしました🤫
https://note.com/bets_inc/n/n9190c38dcfc4
カケアイやWistantなど、1ON1ミーティングをサポートする有料ツールを導入するかどうかの前段階の運用イメージを付けてもらえれば幸いです



コメント