LANG SELRCT

Google Apps Scriptのコードを書く場所  (新規作成: スプレッドシート | スクリプトエディタ

2020年9月21日月曜日

Googleドライブ内のフォルダ名とidを取得したい


MISSION
Googleドライブ内のフォルダ名とidを取得する


以下のコード.gsでfolderIdを指定してgetFilesInFolder()を実行すると
指定したフォルダ内のファイル名とidがログに出力されます。


コード.gs
function getFilesInFolder() {
  const folderId = "Googleドライブ内のフォルダID";
  const folder = DriveApp.getFolderById(folderId);
  const files = folder.getFiles();
  let array = [];
  while(files.hasNext()) {
    const file = files.next();
    var obj = {};
    obj["name"] = file.getName();
    obj["url"] = file.getUrl();
    array.push(obj);
  }
  Logger.log(array);
}



2020年9月5日土曜日

JIRAのAutomation rulesでglobal ruleとmultiple projectsには実行Limitがあるらしい(スタンダードプラン)


JIRAのスタンダードプランの場合
Automation rulesのScopeの設定で、multi-project か global rule だと実行数のLimitにかかる可能性があります。

Single-project なら使用量にカウントされないようです。


Limitにかかる場合は、Scopeでプロジェクトを一つに絞るか、プレミアムプランにアップグレードする必要があるようです。


使用量は以下URLのSITENAMEをご自身のものにして「Usage」から確認できます。


Scopeは各ルールの詳細で設定できます。


Limitにかかるのはスタンダードプランで、トライアル中のプレミアムプランを見るとUNLIMITEDになっていました。

2020年9月4日金曜日

JIRAの画面設定にちょっと強くなりたい


MISSION
JIRAの画面設定についてちょっと強くなる


KEY 
  • 画面
  • 画面スキーム
  • 課題タイプ画面スキーム
  • トランジションビュー



JIRAのサポートページに詳しく書かれていますが、設定の度に読み直すのはつらいので、自分でわかる粒度にして整理してみました。
  • 画面は、フィールドを配置できる
    • 画面スキームかトランジションビューに関連付けて表示することができる
  • 画面スキームは、課題タイプに関連付けることができる
    • 作成、編集、表示それぞれに画面を指定できる
  • 課題タイプ画面スキームは、課題タイプごとの画面スキームを管理できる
    • 課題タイプごとに画面スキームを関連付けることができる
  • トランジションビューは、ワークフローの中で指定した画面を表示できる


言葉だけだとイメージしにくいので、スクショとともにもう一度

画面とは
  • 画面にはフィールドを配置できる

画面スキームとは
  • 課題の作成、編集、表示それぞれに異なる画面を設定できる

課題タイプ画面スキームとは
  • 課題タイプごとに画面スキームを設定することができる

2020年9月2日水曜日

JIRAで画面を追加したい


MISSION
JIRAで画面を追加する


KEY
以下URLの「SITENAME」をご自身のものに変更すると
画面の一覧を開けます。
https://SITENAME.atlassian.net/secure/admin/ViewFieldScreens.jspa


PROCESS
プロジェクト設定
画面
アクション
画面の編集
画面
画面を追加


STEPS 

STEP1
プロジェクト設定をクリックします。


STEP2
画面をクリックします。


STEP3
アクション > 画面の編集 をクリックします。


STEP4
画面をクリックします。


画面の一覧が表示されます。


STEP5
画面を追加をクリックします。


STEP6
名前と説明を入れて追加をクリックします。

STEP7
フィールドの選択で、画面に表示したいフィールドを追加していきます。


追加した画面は、課題の操作に関連付けることができます。

JIRAで課題作成時の画面の項目を設定したい


MISSION
JIRAで課題作成時の画面の項目を設定する


KEY
課題の操作を画面に関連付け


PROCESS
プロジェクト設定
画面

編集アイコン

課題の操作を画面に関連付け


STEPS 

STEP1
プロジェクト設定をクリックします。


STEP2
画面をクリックします。


STEP3
設定したい課題タイプの画面スキームの左端にある編集アイコンをクリックします。


STEP4
課題の操作を画面に関連付けをクリックします。


STEP5
①課題の操作を選択します。
  • 課題を作成
  • 課題の編集
  • 課題の表示
②画面を選択します。
③追加をクリックします。

これで、課題作成時にバグの場合は、STEP5で設定した画面の項目が表示されるようになりました。

JIRAで画面をコピーしたい


MISSION
JIRAで画面をコピーする


KEY 
以下URLの「SITENAME」をご自身のものに変更すると
画面の一覧を開けます。
https://SITENAME.atlassian.net/secure/admin/ViewFieldScreens.jspa


PROCESS

プロジェクト設定
画面
アクション
画面の編集
画面
コピー


STEPS

STEP1
プロジェクト設定をクリックします。


STEP2
画面をクリックします。


STEP3
アクション > 画面の編集 をクリックします。


STEP4
画面をクリックします。


画面の一覧が表示されます。


STEP5
コピーしたい画面スキームの コピー をクリックします。


STEP6
名前と説明を入力してコピーをクリックします。


コピーが作成されました。


JIRAで画面スキームをコピーしたい


MISSION
JIRAで画面スキームをコピーする


KEY
以下URLの「SITENAME」をご自身のものに変更すると
画面スキームの一覧を開けます。
https://SITENAME.atlassian.net/secure/admin/ViewFieldScreenSchemes.jspa


PROCESS
プロジェクト設定
画面
アクション
画面の編集
画面スキーム
コピー


STEPS

STEP1
プロジェクト設定をクリックします。


STEP2
画面をクリックします。


STEP3
アクション > 画面の編集をクリックします。


STEP4
画面スキームをクリックします。


STEP5
コピーしたい課題タイプ画面スキームの コピー をクリックします。


STEP6
名前を決めて コピー をクリックします。

JIRAで課題タイプごとに画面スキームを紐付けたい


MISSION
JIRAで課題タイプごとに画面スキームを紐付ける


PROCESS
プロジェクト設定
課題タイプ
アクション
課題タイプの編集
課題タイプ画面スキーム
設定
課題タイプを画面スキームに関連付け


STEPS

STEP1
課題タイプ画面スキーム一覧を開きます。


STEP2
設定をクリックします。


STEP3
課題タイプを画面スキームに関連付け をクリックします。


STEP4
課題タイプと画面スキームを選択して、追加をクリックします。


指定した課題タイプに、指定した画面スキームがひも付きました。


参考

画面および課題操作マッピングと課題タイプとの関連付け

画面と課題操作の関連付け

2020年9月1日火曜日

JIRAで課題タイプ画面スキームの一覧を開きたい


MISSION
JIRAで課題タイプ画面スキームの一覧を開く


KEY
以下URLの「SITENAME」をご自身のものに変更すると
課題タイプ画面スキームの一覧を開けます。


PROCESS

プロジェクト設定
課題タイプ
アクション
課題タイプの編集
課題タイプ画面スキーム



STEPS

STEP1
プロジェクト設定をクリックします。


STEP2
①課題タイプをクリックします
②アクション > 課題タイプの編集をクリックします


STEP3
課題タイプ画面スキームをクリックします。


課題タイプ画面スキームの一覧が表示されます。




参考

画面および課題操作マッピングと課題タイプとの関連付け

2020年8月31日月曜日

JIRAで権限スキームをコピーしたい


MISSION
JIRAの権限スキームをコピーする


PROCESS
プロジェクト設定
権限
アクション
権限を編集
権限スキーム
コピー



STEPS

STEP1
左メニューのプロジェクト設定をクリックします。


STEP2
権限をクリックします。


STEP3
右上のアクション > 権限を編集をクリックします。


STEP4
左メニューで権限スキームをクリックします。


STEP5
アクション列のコピーをクリックします。


コピーが作成されました。



参考 

プロジェクト権限を管理する > 権限スキームのコピー

2020年8月22日土曜日

Slackの特定Channelへの投稿をSlack Appでキャッチしたい


MISSION
Slackの特定channelへの投稿をSlack Appでキャッチする


BEFORE
Outgoing Webhookでは簡単にできた。
(Slack Appが推奨されている)cf. Outgoing Webhooks


AFTER 
Slack Appで実現する。


PROCESS
Slack Appを新規作成
Request URL用にWebアプリを作成
Subscribe to bot events を設定
Workspaceにインストール
Channelにインストール


STEPS 

STEP1
① 左上にあるワークスペースのメニューを開きます。
② Settings & administration をクリックします。
③ Customize ワークスペース名 をクリックします。


STEP2
Configure apps をクリックします。


STEP3
Build をクリックします。


STEP4
Create New App をクリックします。


STEP5
  • App Name を決めます
  • Development Slack Workspaceを決めます
  • Create Appをクリックします


STEP6
Event Subscriptions をクリックします。


STEP7
Off をクリックして On にします。 

Google Apps ScriptでRequest URLに入れるWebアプリを作ります。



STEP18
STEP7の Request にGoogle Apps Scriptで作ったWebアプリのURLを貼り付けます。

するとこのようなエラーが出ると思います。
(params.challenge がうまく返せていない)


STEP19
エラーを回避するために
Google Apps Scriptのコードで5行目から8行目を//でコメントアウトします。


STEP20
公開 > ウェブアプリケーションとして導入 を選択します。


STEP21
Project Version を New にして、更新 します。


STEP22
Slackに戻って Retry をクリックします。

すると今度は エラーが消えて Verified になります。


STEP23
STEP19でコメントアウトした5行目から8行目を元に戻します。
(Verified後は11, 12行目をコメントアウトしても動くようです)


STEP24
STEP20〜21と同じくバージョンを更新します。
(修正したコードを反映する際にはバージョンの更新が必要なので忘れずに)


STEP25
Add Bot User Event をクリックします。


STEP26
message.channels を検索して選択します。


STEP27
右下の Save Changes を選択します。


STEP28
① 左のメニューから Basic Information をクリックします。
② Install your app to your workspace をクリックします。
③ Install App to Workspace をクリックします。


STEP29
Allow をクリックします。


STEP30
① Slackで対象Channelの Details を開きます。
② More をクリックします。
③ Add apps をクリックします。


STEP31
① 作成したアプリを検索します。
② 作成したアプリの右端の Add をクリックします。


Channelにアプリが追加されます。


STEP32
メッセージを投稿すると、Googleドライブの指定したフォルダにファイルが作成されます。

あとはWebアプリ側のコードを好きなように書き換えて処理を追加します。

これでOutgoing Webhookを使わずにSlack Appで代替することができました。





STEP8〜17までの手順

Google Apps ScriptでRequest URLに入れるWebアプリを作る



STEP8
Slack App からのメッセージを受け取るWebアプリを作ります。
このブログではGoogle Apps Scriptで作るため、新規プロジェクトを作成します。
このリンクから作成できます↓


STEP9
コード.gsをコピーして、1行目から貼り付けて上書きします。
(プロジェクト名は任意で変更します)



コード.gs 
/************************************
Slack Appからデータを受け取る
************************************/
function doPost(eventObj) {
  create_file(JSON.stringify(eventObj, null, 2));// eventObjの中身をGoogleドライブに出力する
  
  const contents = eventObj.postData.contents;
  create_file(contents);// eventObjのpostDataのcontents中身をGoogleドライブに出力する

  //https://api.slack.com/events/url_verificationの対応で、challengeを返してやる
  var params = JSON.parse(eventObj.postData.getDataAsString());
  return ContentService.createTextOutput(params.challenge);
}

/************************************
Googleドライブの指定フォルダにJSONファイルを保存する
************************************/
function create_file(json) {
  const content_type = "application/json";
  const file_name = "Slack Message";// Googleドライブに出力するファイルの名前
  const blob = Utilities.newBlob("", content_type, file_name);
  const file = blob.setDataFromString(json, "UTF-8");
  const folder = DriveApp.getFolderById("FOLDER_ID");// 出力したいGoogleドライブのフォルダID
  folder.createFile(file);
}




STEP10
公開 > ウェブアプリケーションとして導入 を選択します。


STEP11
① Deployするバージョンに任意でメッセージを入れる
② このWebアプリを実行するユーザーは自身のアカウントにする
③ Slack AppもこのWebアプリへアクセスできるように Anyone, even anonymous にする


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


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


STEP14
詳細 をクリックします。


STEP15
Slack Test App(安全ではないページ)に移動 をクリックします。


STEP16
許可 をクリックします。

STEP17
Current web app URL をコピーします。




関連記事



参考 


Start building Slack apps

最新の投稿

Googleドライブ内のフォルダ名とidを取得したい

MISSION Googleドライブ内のフォルダ名とidを取得する 以下のコード.gsでfolderIdを指定してgetFilesInFolder()を実行すると 指定したフォルダ内のファイル名とidがログに出力されます。 コード.gs function getF...