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

# 経緯

突如となく舞い込んできたフリープランの改定。
![スクリーンショット 2022-07-22 18.22.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2742984/4c6b9cf8-60a2-def0-9655-54013663bad3.png)
> これまでフリープランでは、メッセージ数 10,000 件、ストレージ容量 5 GB という制限がありましたが、今後は過去 90 日間のメッセージ履歴とファイルストレージを無制限に利用できるため、チームはいつ上限に達するのか心配する必要はありません。フリープランを活用しているチームでは、ほとんどの場合、制限が 90 日に変わったことでアクセスできるメッセージ履歴が増えるでしょう。過去 90 日間にどれほど Slack を使っていても、その間の履歴には必ずアクセスできます。

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

まさに私。

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

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


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

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

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

これで満足なのです。


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

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

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

# 完成形

該当シートへ移動できるもくじを設置し、チャンネル専用のシート用意します。
![スクリーンショット 2022-07-22 19.07.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2742984/1cb29f47-1add-fe8d-20f0-5a3653365737.png)

各チャンネル内の投稿データは日付・内容・投稿者の３つです。
![スクリーンショット 2022-07-22 19.06.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2742984/b96a999e-3cb0-dd14-f36a-45f67c8141ca.png)

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


# 概要

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

自動転記に関する情報は以下の記事を頼りに進めます。
※ すごい分かりやすいのでオススメです(^^)
🔽 解説記事：
[【2021最新版】SlackメッセージログをSlack APIとGASで自動保存する方法【コピペOK】](https://best-cloud.jp/slack-message-log-auto-save-gas/)

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

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">私のslackは無事救出された(´；ω；｀)<br><br>ありがとう。ほんとうにありがとう。<br>誰だか知らないけど、<br>ありがとう〜〜〜〜<br><br>【2021最新版】SlackメッセージログをSlack APIとGASで自動保存する方法【コピペOK】 <a href="https://t.co/VHQyFiY7XX">https://t.co/VHQyFiY7XX</a></p>&mdash; horomi@勉強用😗 (@mineral_30) <a href="https://twitter.com/mineral_30/status/1549464492970770432?ref_src=twsrc%5Etfw">July 19, 2022</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

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

作業用のフォルダを作成してください。
![スクリーンショット 2022-07-21 0.46.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2742984/f29082fb-8bc0-e65f-c7a1-693d53f12ffa.png)

Google Apps Script(以下 GAS)を用意します。
![スクリーンショット 2022-07-21 0.51.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2742984/8e90664c-9e76-1901-8970-02b434068d47.png)

[解説記事](https://best-cloud.jp/slack-message-log-auto-save-gas/)の通りに実行すると[SlackLog_Save]というフォルダが生成されます。
![スクリーンショット 2022-07-21 0.50.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2742984/69dbaae7-2822-330f-de04-381e6204f37c.png)

[SlackLog_Save]フォルダの中にslackの投稿データが入っているスプレッドシートが収納されています。
![スクリーンショット 2022-07-21 0.54.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2742984/6a9683e3-801b-1b2c-8900-fcabd6395a2c.png)

開くとこんな感じ
![スクリーンショット 2022-07-21 0.55.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2742984/9db37c6e-a82b-1225-bab4-910e8e86adff.png)

一番前のシートは空。
![スクリーンショット 2022-07-21 0.56.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2742984/83ea8422-59d8-073d-3bb0-67f7d8ad9c62.png)


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

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

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

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

## 原本ssのもくじを作成

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


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


---

原本ssのシート1を開きます。
![スクリーンショット 2022-07-22 16.39.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2742984/2a1b3201-a61e-9662-3dbb-4883093138f5.png)


実行する前に表示させたいセルをアクティブにしておいてください。
![スクリーンショット 2022-07-21 1.01.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2742984/912279b3-3e41-6991-c983-76f4d26f09e8.png)

[解説記事](https://qiita.com/okNirvy/items/d1a2f4918cff8e63dcac)のように「拡張機能」から「Apps Script」を開き、コードをコピペします。
![スクリーンショット 2022-07-22 16.43.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2742984/fe4b1a63-ada4-bd50-3140-0183e5a10533.png)

【実行】すると.....
![スクリーンショット 2022-07-21 1.02.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2742984/9c305282-a106-2942-8a7a-daf890c0c855.png)

先程アクディブにしたセルを始点としたリンク付きチャンネル名が生成されます。
![スクリーンショット 2022-07-21 1.03.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2742984/fa742f76-4e3b-48a4-c149-25b56f038694.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](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2742984/98eb4b4c-e84e-645e-fec2-1ec439bb8c39.png)





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

原本ssのIDをコピーします。
![スクリーンショット 2022-07-21 1.12.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2742984/3336ec28-2c20-48ab-318a-b2d9edc0a19a.png)

開発用シートを開きます。
![スクリーンショット 2022-07-22 17.06.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2742984/be8c7035-17cd-63f8-22e0-babeb7637b8d.png)

f2に原本ssのIDを貼り付けます。
![スクリーンショット 2022-07-22 17.17.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2742984/ebd43be0-9c02-f396-85f8-8e66011c5e6d.png)


変更部分がある場合にはf5やf6を修正し、完成したb2の書式をb3へ貼り付けます。
![スクリーンショット 2022-07-21 1.43.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2742984/9dad5255-ece3-9f12-aef2-e6460032c14c.png)


文頭に【=】を追加して関数を実行
![スクリーンショット 2022-07-21 1.50.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2742984/11ba081d-cba9-6105-53e7-2e85a3f88dc7.png)


原本ssからチャンネル名をそのまま表示できた＼(^o^)／
![スクリーンショット 2022-07-21 1.52.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2742984/424b7abe-c58c-4806-b0aa-e308ac0d9819.png)

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


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

C3セルにC2の書式をコピペします。
![スクリーンショット 2022-07-21 2.01.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2742984/b928284b-fd11-16ef-4573-228b313a9628.png)


文頭に【=】を追加して関数を実行
![スクリーンショット 2022-07-21 2.03.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2742984/8cc015c5-0209-7fff-7328-f30c10c8eea8.png)


オートフィルして全てのチャンネル名も実行します。
![スクリーンショット 2022-07-21 2.04.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2742984/818c71e0-c80b-b09b-e98f-5dbe0d1cb1af.png)

チャンネル名以外のシートはエラーなので消しておきます。
![スクリーンショット 2022-07-21 2.06.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2742984/4e1ac22b-bfdc-1afd-d276-e9d34a675f49.png)



見やすくなりました＼(^o^)／
![スクリーンショット 2022-07-21 2.08.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2742984/93b0fe6c-f6d9-4774-5a53-c106e75426bf.png)


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


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

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

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


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

H4セルにH2の書式をコピペします
![スクリーンショット 2022-07-21 12.13.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2742984/af3d9a19-0124-236a-2593-b09531f20d78.png)

文頭に【=】を追加して関数を実行
![スクリーンショット 2022-07-21 12.16.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2742984/2769e5da-e67d-c6f1-2dbb-4f913ac946d1.png)

B列のチャンネル名がある行までオートフィルします。
![スクリーンショット 2022-07-21 12.18.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2742984/2ddce213-fd83-4c15-972a-e28ae568c3b7.png)

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

【投稿データ】シートを開きます。
![スクリーンショット 2022-07-22 17.43.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2742984/48aaf284-c278-941e-ec21-df6d50f641bf.png)


【開発用】シートH列に用意した「投稿データの参照関数」をコピーします。
![スクリーンショット 2022-07-21 12.36.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2742984/5fc8c04c-ea47-e64e-d04a-7167fc918433.png)
投稿者名簿でも使うので全員が参加しているチャンネルを選択しておいてください。



【投稿データ】シートに戻り、a2セルに書式を貼り付けます。
![スクリーンショット 2022-07-21 12.41.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2742984/51f8e2f1-e961-5b00-147c-1d4786eb1513.png)

文頭に【=】を追加して関数を実行
![スクリーンショット 2022-07-21 12.44.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2742984/7ea5a938-b5e3-4107-47bc-ff2de5664e3c.png)

原本ssから投稿データを参照できました＼(^o^)／
![スクリーンショット 2022-07-21 12.48.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2742984/7174142e-2d0c-643d-48d4-2c40341ea29d.png)



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


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

 【投稿者名簿】シートを開きます。
![スクリーンショット 2022-07-21 12.59.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2742984/fbc6f3c0-f318-3d31-86e6-34dde9852bb2.png)


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

b2セルの文頭に【=】を追加して関数を実行
![スクリーンショット 2022-07-21 13.02.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2742984/814a405b-6a97-6e9c-e814-87c798a789e0.png)

重複無しで収集できました＼(^o^)／
![スクリーンショット 2022-07-21 13.03.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2742984/1c93d019-3a44-8074-b490-251c616e6ede.png)


c列の投稿者名を追加するには......
![スクリーンショット 2022-07-21 13.05.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2742984/12df319a-65f4-d252-c043-fbdf0bed336f.png)


slackから投稿者名を手動で入力していきます。(他の術が思いつかなかった....)
![スクリーンショット 2022-07-21 13.07.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2742984/18efb61f-bddc-b58e-6c5c-88560157133a.png)
※ botは参加者に表示されません。

IDはアドレスの部分です。
![スクリーンショット 2022-07-22 0.00.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2742984/df555e19-661e-735a-184d-f005295c768f.png)

手入力で頑張ります。
![スクリーンショット 2022-07-21 13.13.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2742984/c760fb75-4739-549f-9f59-a080d85689cb.png)



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



C2セルの文頭に【=】を追加して関数を実行
![スクリーンショット 2022-07-22 0.07.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2742984/6310127a-fa91-a5bc-4083-046538a90e1d.png)


オートフィル
![スクリーンショット 2022-07-22 0.08.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2742984/775880e3-7c93-5275-c03a-81a8013e3790.png)


投稿者名+IDに変換できました＼(^o^)／
![スクリーンショット 2022-07-22 0.09.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2742984/c38ab7b6-71d2-ac84-5e54-57c7f45313f5.png)



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


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

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

【複製用】シートをコピーします。
![スクリーンショット 2022-07-22 0.16.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2742984/8c2406a3-c5bf-f294-e801-32f3ca646fb8.png)


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

【開発用】シートで用意したc列のチャンネル名をコピーします。
![スクリーンショット 2022-07-22 0.19.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2742984/7ec01a25-807a-f05c-8139-c2cd94af14d0.png)


【複製用のコピー】シートの名前を変更します。
![スクリーンショット 2022-07-22 0.22.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2742984/8b3bb6a7-59d2-2956-f9bb-9991118db4e1.png)

先程コピーしたチャンネル名を貼り付けます。
![スクリーンショット 2022-07-22 0.23.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2742984/74ef7326-9f29-e534-c048-b52d83b26614.png)

(^O^)／OK

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

【開発用】シートのH列に用意した「投稿データの参照関数」をコピーします。
![スクリーンショット 2022-07-22 0.31.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2742984/8f7fa8e7-fd71-e8f1-541e-b1ac345df16d.png)

用意したチャンネルシートのA2セルに書式を貼り付けます。
![スクリーンショット 2022-07-22 0.37.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2742984/569340a0-ee3a-250d-22c3-4d287dff3a1f.png)

文頭に【=】を追加して関数を実行
![スクリーンショット 2022-07-22 0.38.50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2742984/0b38cfe6-275e-2f49-7756-77bf71f77a2b.png)
👇

![スクリーンショット 2022-07-22 0.43.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2742984/a97e862b-9674-4fcc-b7c2-4f86f324d5ee.png)

投稿者名(ID)列も同時に変換されています。
![スクリーンショット 2022-07-22 0.44.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2742984/1c1a659b-bbdf-7c96-d2f2-ff7d336b25bb.png)



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



## 仕上げ

【もくじ】シートを用意します。
![スクリーンショット 2022-07-22 18.18.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2742984/fc607baa-000f-4db3-4152-62b0d2642216.png)


もくじ順を意識してチャンネルシートを並び替えます。
![スクリーンショット 2022-07-22 0.49.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2742984/80bcbb2d-d007-f36d-34b8-97d85f8aee69.png)

原本ssで作ったもくじのようにリンク付きチャンネル一覧を生成させます。
[※ 解説記事を参照ください](https://qiita.com/okNirvy/items/d1a2f4918cff8e63dcac)


実行すると....
![スクリーンショット 2022-07-22 0.55.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2742984/34cdfcb8-a5b8-38b4-c220-81d3b2000373.png)


できました＼(^o^)／

テンプレのような１行おきに色塗りをしてヘッダーは目立つようにしたい場合は
全セルを選択(⌘+A,ctrl+A)してから【表示形式 > 交互の背景色】から選ぶと変更ができます。
グレイ以外にもあるのでお好きな色を選んでみてください🎶
![スクリーンショット 2022-07-22 0.57.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2742984/4fada582-4906-fc83-ce31-ce3e4f66f7aa.png)
👇
![スクリーンショット 2022-07-22 18.52.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2742984/7d34f55b-8172-767e-2e4e-08db3956f4c0.png)




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


# 最後に

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

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

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

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


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

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

---

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

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

![スクリーンショット 2022-08-14 1.36.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2742984/70102f92-24a2-ed4b-acfc-e1d5b9cb1142.png)
https://github.com/herohoro/slack-my-app/tree/main/set-up_GAS

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

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

https://twitter.com/mineral_30/status/1551069699546685440

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

https://twitter.com/mineral_30/status/1554820103694581760

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


https://github.com/herohoro/slack-my-app


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

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