📝

Google スプレッドシートから 大量のesa記事名を一括変更できる「Renesa」を作った

に公開

はじめに

esaは記事をIDで管理しており、記事名の変更にはとても寛容です。
しかし、変更する記事数が多いと非常に面倒で、また、記事名を規則的に変更したい場合は正規表現や関数を用いた一括変更が効率的です。

そのため、Google Apps Scriptを用いて、Googleスプレッドシート上でesaの記事名を変更できるツール「Renesa(リネーサ)」を作成しました。
命名は「Rename」と「esa」を組み合わせたものです。
名前変更前の様子

ちなみに、これは私が所属している大阪大学ロボット製作団体Robohanにて、議事録の命名規則を統一する際に開発したものです。それ以前の記事名は以下の画像の通り、皆バラバラでした。
最近更新された記事一覧。「20260424_全体会議」と「20260424」と
「学ロボ会議_20260424」が並んでいる。

また、プログラムは GitHub に記載しています。

機能

メインの機能は以下の通りです。

  • 記事名の一括取得:
    esaのカテゴリ・記事名をスプレッドシートに一覧で取得できる。
  • 関数等を用いた記事名の一括変更:
    スプレッドシート上で関数等を用いてカテゴリ・記事名を変更できる。
  • 記事名の一括反映:
    スプレッドシートからカテゴリ・記事名をesaに反映させることができる。

また、誰でもできるだけ使いやすいように、以下の機能も実装しました。

  • メニュー操作:
    スプレッドシート上部のメニューから操作できる。
  • ダイアログ操作:
    トークンやチーム名などの設定はダイアログ上で行える。
  • 進捗状況の可視化:
    進捗状況が随時シート上に表示される。
  • 再起動しても設定が消えない:
    設定を保存し、再起動しても設定が消えない。

さらに、大量の記事を安全かつ快適に処理するため、以下の機能も組み込んでいます。

  • GASの6分制限への事前対策:
    実行時間が5分を経過した時点で、進捗を反映して安全に処理を一時中断します。
    (再度実行すれば残りの行から再開可能)
  • APIエラーの視覚化:
    APIリクエストの実行に失敗した行はシート上で赤くハイライトされ、進捗状況セルにエラー原因が表示されます。

使い方

esaのパーソナルアクセストークンの取得方法

  1. 「PAT / OAuth Apps」にアクセスし、「+新しいPAT v2を作成」を押す。
    以下のURLのチーム名の部分を自身のものに変えて、URL欄に貼り付けます。
    https://[チーム名].esa.io/user/applications
    そして、画面中央にある「+新しいPAT v2を作成」を押します。
  2. トークン名と権限、対象チームを設定し、「✔新しいPAT v2を作成」を押す。
    トークン名は分かりやすく「Renesa」にします。
    権限は「read:post」「write:post」「read:category」「write:category」の4つを選択します。
    対象チームは自身のチームを選択します。

  3. パーソナルトークンをコピーする
    画面上に表示されるトークンをコピーし、一時的にメモ帳等に控えます。

スプレッドシートの初期設定

初期設定です。これは各スプレッドシートで一度だけ行います。

  1. スプレッドシートを作成して名前を変更し、「Apps Script」を開く。
    自身のGoogleドライブ上でスプレッドシートを作成します。
    左上の名前を分かりやすく「Renesa」にします。
    上部メニューの「拡張機能」から「Apps Script」を選択し、Apps Scriptのエディタを開きます。
  2. GASの名前を変更し、プログラムを張り付ける。
    左上の名前を分かりやすく「Renesa」にします。
    GitHubのコードをコードエディター上に貼り付けます。
    エディター上部の保存マークを押し、変更を保存します。
  3. スプレッドシートをリロードし、「セットアップ」を実行する。
    タブをリロードし、スプレッドシートを更新します。
    上部メニューの右端に「Renesa」が表示されます。
    「Renesa」から「0. 初回のみ実行:セットアップ」を選択します。
  4. 「認証が必要です」にOKを押す。
    スクリプトの実行に許可が必要なので、「OK」を押します。
  5. 「Renesa(安全ではないページ)に移動」を押す。
    「詳細を非表示」から「Renesa(安全ではないページ)に移動」を押します。
    Googleが承認していないスクリプトなので、このような警告が出ますが、私を信用できるなら問題ありません。
  6. すべて選択にチェックを入れ、「続行」を押す。
    ☑すべて選択にチェックを入れ、右下の「続行」を押します。
    これにてスクリプトの実行が始まります。
  7. 「パーソナルアクセストークン(PAT)」を入力する。
    先ほどコピーしたesaのパーソナルアクセストークンを貼り付け、「OK」を押します。
  8. 「チーム名」を入力する。
    自身のesaのチーム名を入力し、「OK」を押します。
  9. 完了
    「セットアップが完了しました!」と表示されたら完了です。

カテゴリ・記事名一覧の取得

カテゴリ・記事名の一覧を取得し、スプレッドシート状に表示します。

  1. 上部メニューの「Renesa」から「1. 記事名一覧を取得」を選択します。
  2. 待つ
    左上の「進捗状況:000記事の取得が完了...」が変わるのを眺めながら、待ちます。
  3. 完了
    「全 0000 記事の取得を完了しました。」と表示されたら完了です。

スプレッドシート上でのカテゴリ・記事名の編集

方法は自由ですが、textjoinrightleftなどの関数を使うと効率的に編集できます。
以下の例では=textjoin(,,"25",right(C1616,4),"_春ロボ会議")という式を入力しています。

esaへのカテゴリ・記事名の反映

スプレッドシート上で編集したカテゴリ・記事名をesa上に反映させます。

  1. 上部メニューの「Renesa」から「2. 記事名の一括変更」を選択します。
    画像は省略
  2. 待つ
    左上の「#0000 「xxx」に変更しました」が変わるのを眺めながら、待ちます。
  3. 完了
    「全 0000 件の記事名の変更を完了しました。」と表示されたら完了です。

Discussion