LoginSignup
7
6

More than 1 year has passed since last update.

【テンプレ有】Googleスプレッドシート・GASを使って投稿履歴を簡単に移行しよう_slackフリープランでも大丈夫

Last updated at Posted at 2022-07-22

経緯

突如となく舞い込んできたフリープランの改定。
スクリーンショット 2022-07-22 18.22.31.png

これまでフリープランでは、メッセージ数 10,000 件、ストレージ容量 5 GB という制限がありましたが、今後は過去 90 日間のメッセージ履歴とファイルストレージを無制限に利用できるため、チームはいつ上限に達するのか心配する必要はありません。フリープランを活用しているチームでは、ほとんどの場合、制限が 90 日に変わったことでアクセスできるメッセージ履歴が増えるでしょう。過去 90 日間にどれほど Slack を使っていても、その間の履歴には必ずアクセスできます。

要は90日後には履歴が消されるということ。
対して容量を消費していない人間にとっては絶望的な改定。

まさに私。

職場で使っているslack。
私の提案で紙ベースの申し送り文化を打開すべく導入したslack。
2年たった今、
やっと5000件。

90日間でいったい何件使用しているのだろうか......(_)

Discordへの引っ越し案も無くもないですが、
何せ紙文化漂う職場。
2年たってやっとスタンプ押し合えるレベルまで成長したにも関わらず、
引っ越しなんてしたもんには
「これ、どうやって開くの?」
から始まるかと思うとゾッするのは私だけでしょうか???

なんとしても90日以降の履歴を遡れる場所を作りたい。
いつ・だれが・どんな内容の投稿をしたかを簡単に遡ることができればいい。

【私達、こんなやりとりしてたよね。ふふふ】

これで満足なのです。

そこでこの記事では、Googleスプレッドシートを使って【ふふふ】とできる場所を作る流れを解説します。

難しい関数の解説は省略します。
💪 1日あれば作れる
💪 メンテナンスの負担最小限
💪 テンプレ配布有り
💪 GASの有益記事リンク有り

パパパっと作って大切な思い出、守りましょう\(^o^)/

完成形

該当シートへ移動できるもくじを設置し、チャンネル専用のシート用意します。
スクリーンショット 2022-07-22 19.07.27.png

各チャンネル内の投稿データは日付・内容・投稿者の3つです。
スクリーンショット 2022-07-22 19.06.57.png

※ ファイルや絵文字などは変換していません。

概要

  1. slackのデータ → スプレッドシート(原本)
    • データの移行_GAS
  2. スプレッドシート(原本)→ スプレッドシート(閲覧用)
    • 原本のもくじを用意_GAS
    • チャンネル一覧を参照し分かりやすく変換
    • 投稿データを参照
    • 投稿者IDを参照し分かりやすく変換
    • 複製して全チャンネル分を作成
    • もくじを作って仕上げ_GAS

slackのデータをスプレッドシート(原本)へ自動転記

自動転記に関する情報は以下の記事を頼りに進めます。
※ すごい分かりやすいのでオススメです(^^)
🔽 解説記事:
【2021最新版】SlackメッセージログをSlack APIとGASで自動保存する方法【コピペOK】

※ 4時間ほどひたすらGitHubのリポジトリや記事を捜索しましたがなかなか見つけられず諦めと怒りがこみ上げたときに出会ったのがこの記事でした。本当に感謝です。


ではさっそくはじめます⭐

作業用のフォルダを作成してください。
スクリーンショット 2022-07-21 0.46.54.png

Google Apps Script(以下 GAS)を用意します。
スクリーンショット 2022-07-21 0.51.01.png

解説記事の通りに実行すると[SlackLog_Save]というフォルダが生成されます。
スクリーンショット 2022-07-21 0.50.13.png

[SlackLog_Save]フォルダの中にslackの投稿データが入っているスプレッドシートが収納されています。
スクリーンショット 2022-07-21 0.54.00.png

開くとこんな感じ
スクリーンショット 2022-07-21 0.55.25.png

一番前のシートは空。
スクリーンショット 2022-07-21 0.56.09.png

このスプレッドシートを原本(以降 「原本ss」と称す)として
閲覧用スプレッドシート(以降 「閲覧用ss」と称す)を作成していきます(´・ω・`)

閲覧用スプレッドシートを作成しよう

  1. もくじを作る
  2. テンプレを使って投稿データを参照する
  3. 微調整して見やすくする

以上のような流れで進めていきます(´∀`)

原本ssのもくじを作成

リンク付きのチャンネル一覧を作成します。
https://qiita.com/okNirvy/items/d1a2f4918cff8e63dcac
👆
この記事を参考にするとリンク付きのチャンネル一覧を作れます。

一緒に実装していきましょ〜(´・ω・`)//


原本ssのシート1を開きます。
スクリーンショット 2022-07-22 16.39.46.png

実行する前に表示させたいセルをアクティブにしておいてください。
スクリーンショット 2022-07-21 1.01.19.png

解説記事のように「拡張機能」から「Apps Script」を開き、コードをコピペします。
スクリーンショット 2022-07-22 16.43.54.png

【実行】すると.....
スクリーンショット 2022-07-21 1.02.03.png

先程アクディブにしたセルを始点としたリンク付きチャンネル名が生成されます。
スクリーンショット 2022-07-21 1.03.51.png

原本ssのもくじができた\(^o^)/

閲覧用ssにチャンネル一覧を原本ssから参照して見やすく加工

閲覧用ssのテンプレートを用意しました。
以下のリンクから複製してください。
https://docs.google.com/spreadsheets/d/1th1WdEuGovv_MlnMd4O7Falou5UKGjTHOovlsbG-aOQ/edit?usp=sharing

スクリーンショット 2022-07-22 17.03.06.png

原本ssから「チャンネル名」をそのまま参照

原本ssのIDをコピーします。
スクリーンショット 2022-07-21 1.12.56.png

開発用シートを開きます。
スクリーンショット 2022-07-22 17.06.22.png

f2に原本ssのIDを貼り付けます。
スクリーンショット 2022-07-22 17.17.14.png

変更部分がある場合にはf5やf6を修正し、完成したb2の書式をb3へ貼り付けます。
スクリーンショット 2022-07-21 1.43.51.png

文頭に【=】を追加して関数を実行
スクリーンショット 2022-07-21 1.50.04.png

原本ssからチャンネル名をそのまま表示できた\(^o^)/
スクリーンショット 2022-07-21 1.52.29.png

チャンネル名のカッコ書き部分を無くしたいので加工します。

不要な文字列は削除して見やすく変換

C3セルにC2の書式をコピペします。
スクリーンショット 2022-07-21 2.01.26.png

文頭に【=】を追加して関数を実行
スクリーンショット 2022-07-21 2.03.38.png

オートフィルして全てのチャンネル名も実行します。
スクリーンショット 2022-07-21 2.04.29.png

チャンネル名以外のシートはエラーなので消しておきます。
スクリーンショット 2022-07-21 2.06.15.png

見やすくなりました\(^o^)/
スクリーンショット 2022-07-21 2.08.08.png

チャンネル一覧を作成できたので、
次はチャンネル内の投稿データを参照していきます。

原本ssから投稿データを参照

意識したこと:

  • メンテナンスの手間を減らす
  • 変更があってもすぐに修正できるようにする
  • チャンネル数が多くても複製用シートをコピーすれば対応できるようにする

参照・参照....の使い回しで量産できるように下準備をしていきます。

投稿データを参照するための関数を用意

H4セルにH2の書式をコピペします
スクリーンショット 2022-07-21 12.13.01.png

文頭に【=】を追加して関数を実行
スクリーンショット 2022-07-21 12.16.28.png

B列のチャンネル名がある行までオートフィルします。
スクリーンショット 2022-07-21 12.18.56.png

投稿データの参照関数を使って投稿内容を参照

【投稿データ】シートを開きます。
スクリーンショット 2022-07-22 17.43.17.png

【開発用】シートH列に用意した「投稿データの参照関数」をコピーします。
スクリーンショット 2022-07-21 12.36.43.png
投稿者名簿でも使うので全員が参加しているチャンネルを選択しておいてください。

【投稿データ】シートに戻り、a2セルに書式を貼り付けます。
スクリーンショット 2022-07-21 12.41.52.png

文頭に【=】を追加して関数を実行
スクリーンショット 2022-07-21 12.44.34.png

原本ssから投稿データを参照できました\(^o^)/
スクリーンショット 2022-07-21 12.48.23.png

(´・ω・`) 投稿者IDだけでは見にくいですね.....

投稿者IDを投稿者名+IDに変換

【投稿者名簿】シートを開きます。
スクリーンショット 2022-07-21 12.59.14.png

【投稿内容シート】を参照して投稿者IDを重複無しで収集していきます(´∀`)

b2セルの文頭に【=】を追加して関数を実行
スクリーンショット 2022-07-21 13.02.49.png

重複無しで収集できました\(^o^)/
スクリーンショット 2022-07-21 13.03.55.png

c列の投稿者名を追加するには......
スクリーンショット 2022-07-21 13.05.34.png

slackから投稿者名を手動で入力していきます。(他の術が思いつかなかった....)
スクリーンショット 2022-07-21 13.07.43.png
※ botは参加者に表示されません。

IDはアドレスの部分です。
スクリーンショット 2022-07-22 0.00.51.png

手入力で頑張ります。
スクリーンショット 2022-07-21 13.13.51.png

投稿者名が揃ったので投稿者名+IDに変換していきましょう。

C2セルの文頭に【=】を追加して関数を実行
スクリーンショット 2022-07-22 0.07.11.png

オートフィル
スクリーンショット 2022-07-22 0.08.05.png

投稿者名+IDに変換できました\(^o^)/
スクリーンショット 2022-07-22 0.09.44.png

参照・参照....の使い回しで量産できるような下準備が整いました(´∀`)(´∀`)

ここからは一気に仕上げていきます🎶

複製して全チャンネルの投稿内容を参照

【複製用】シートをコピーします。
スクリーンショット 2022-07-22 0.16.35.png

コピーしたシートの名前をチャンネル名にする

【開発用】シートで用意したc列のチャンネル名をコピーします。
スクリーンショット 2022-07-22 0.19.44.png

【複製用のコピー】シートの名前を変更します。
スクリーンショット 2022-07-22 0.22.16.png

先程コピーしたチャンネル名を貼り付けます。
スクリーンショット 2022-07-22 0.23.30.png

(^O^)/OK

チャンネル内の投稿データを参照

【開発用】シートのH列に用意した「投稿データの参照関数」をコピーします。
スクリーンショット 2022-07-22 0.31.54.png

用意したチャンネルシートのA2セルに書式を貼り付けます。
スクリーンショット 2022-07-22 0.37.33.png

文頭に【=】を追加して関数を実行
スクリーンショット 2022-07-22 0.38.50.png
👇

スクリーンショット 2022-07-22 0.43.31.png

投稿者名(ID)列も同時に変換されています。
スクリーンショット 2022-07-22 0.44.39.png

これを繰り返して全チャンネル分の投稿データを参照していきましょう\(^o^)/

仕上げ

【もくじ】シートを用意します。
スクリーンショット 2022-07-22 18.18.02.png

もくじ順を意識してチャンネルシートを並び替えます。
スクリーンショット 2022-07-22 0.49.32.png

原本ssで作ったもくじのようにリンク付きチャンネル一覧を生成させます。
※ 解説記事を参照ください

実行すると....
スクリーンショット 2022-07-22 0.55.02.png

できました\(^o^)/

テンプレのような1行おきに色塗りをしてヘッダーは目立つようにしたい場合は
全セルを選択(⌘+A,ctrl+A)してから【表示形式 > 交互の背景色】から選ぶと変更ができます。
グレイ以外にもあるのでお好きな色を選んでみてください🎶
スクリーンショット 2022-07-22 0.57.02.png
👇
スクリーンショット 2022-07-22 18.52.42.png

これで無事にslackのデータをスプレッドシートへ移し、
さかのぼれるようになりました。(´ε` )

最後に

私にもう少しGASのスキルがあれば......
投稿者名をslack APIから取得したい。。。。

私にもう少しアプリ開発するスキルがあれば.....
スマホからでも見やすく検索できるようにしたい。。。。

絵文字・メンション・マークダウン記号をslackで見えていたように変換したい。。。。。

やりたいことがたくさんありますが、
「とにかく早くどうにかしたい!!」
を最優先に作ってみました。

このテンプレからもっといいものを思い付いて作れたという方、
GASの部分を改良したという方、
スプレッドシートでなくアプリにしたっていう方、

情報求むです。(´・ω・`)


後日談_Next.jsでアプリ開発中

GAS実行後の微妙な処理部分をカットするべく、コードを修正しました。

スクリーンショット 2022-08-14 1.36.30.png
https://github.com/herohoro/slack-my-app/tree/main/set-up_GAS

set-up_GASディレクトリ内のコードに差し替えてGASを実行すると、
この記事で解説されている工程より簡単に実装できるかと思います⭐

このリポジトリは何かと言うと....
閲覧用ssを使わず原本ssからアプリにして使いやすくしたい....
という願望からNext.jsで開発をはじめました。

投稿数が多いと画面遷移が重々しく、
苦戦中ではあるものの、
その前段階までは仕上がってきました。

無限スクロールの実装が上手くできずに苦戦しているのでもしよろしければFork後Contributeしていただけると嬉しいです🎶

※ 使える状態まで仕上げられるか不安ではありますが、普段の活動の中でヒントを見つけながら進めていけたらいいなと思っています。

進捗状況をこのスレッドに投稿しています。
https://twitter.com/mineral_30/status/1551069699546685440
形になるとショートムービーで投稿しているので気になる方は覗いてみてくださいm(_ _)m

7
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
6