2022/06/28に更新

【GASで品質向上】リンク先URLを正しいURLに修正する

スプレッドシート小技

リンクが設定されているが、表示されているURLと実際のリンク先のURLが違う・・・稀にありますよね。表示されているURLを正としてリンクを修正するGoogle Apps Scriptです。

こんな悩みを解決します


  • スプレッドシートのリンク、テキストと実際のURLが違ってる!たぶんテキストが正しいんだろうけど・・直すのがめんどくさい!

用意するもの


特にありません。今お使いのスプレッドシートに組み込めます。

このスクリプトで出来ること


  • 指定したセル範囲にあるリンクの中で、テキストと実際のURLが異なるものを探し、リンク先URLを修正します。

使い方


1.セル範囲の選択

サンプルデータとして、見た目は「https://www.google.co.jp」だけど、設定されているリンクは当サイトというものを用意しました。
ありますよね、こういうやつ。

このスクリプトは選択中のセルに対して動作しますので、変換したい範囲を選択してください。

2.スクリプトの実行

上のメニューにある「スクリプト実行」から「リンクテキストでリンク先URLを上書きする」を実行します。

「選択範囲にあるリンクに対して、リンクテキストを正としてリンクURLを書き換えます よろしいですか?」と聞いてきます。問題無ければOKを、中止したいときはキャンセルを押します。

3.結果の確認

量によりますが、数秒で処理が完了するはずです。
表示されているURLと実際のリンク先が一致しました!

4.注意点

このサンプルアプリは、1つのセルに複数のリンクが書き込まれている場合には期待通り動かないはず・・です。
決して手を抜いたわけではないのですが、ちょっと面倒になったので・・・

スクリプト


/**
 * このスクリプトの説明、使い方はこちら。
 * https://myfunc.jp/items/00112/index.html
 */

function onOpen() {
  // スプレッドシートを開いたときに実行される関数

  // UIの取得
  const ui = SpreadsheetApp.getUi();

  // メニューの表示名
  const menu = ui.createMenu('スクリプト実行');

  // メニューに追加するボタン
  menu.addItem('リンクテキストでリンク先URLを上書きする', 'correct_link_url');

  // メニューを画面に追加する
  menu.addToUi();

}


function correct_link_url() {

  // UIを取得
  const ui = SpreadsheetApp.getUi();

  // 実行を確認する
  const response = ui.alert('選択範囲にあるリンクに対して、リンクテキストを正としてリンクURLを書き換えます\nよろしいですか?', ui.ButtonSet.OK_CANCEL);

  // キャンセルが押されたらスクリプトを終了する
  if (response == ui.Button.CANCEL) {
    return;
  }

  // 現在開いているスプレッドシートオブジェクトを取得
  const ss = SpreadsheetApp.getActiveSpreadsheet();

  // 開いているシートオブジェクトを取得
  const sheet = ss.getActiveSheet();

  // 選択中のrangeオブジェクトを取得
  const range = sheet.getActiveRange();

  // 選択中のセルの値を取得
  const values = range.getValues();

  // 選択中のセルのリッチテキスト情報を取得
  const richtexts = range.getRichTextValues();

  // リッチテキストの配列でループする
  for (let i = 0; i < richtexts.length; i++) { // 行のループ

    for (let j = 0; j < richtexts[i].length; j++) { // 列のループ

      // リッチテキストの中身を取得
      let runs = richtexts[i][j].getRuns();

      // リンクテキストとリンクURLが一致していない かつ リンクテキストがURLの場合は
      if (runs[0].getLinkUrl() != values[i][j] && values[i][j].match(/^https?:\/\/.*$/)) {

        // 上書きしたいリンクの値を作成する
        let new_link_url = SpreadsheetApp.newRichTextValue().setText(values[i][j]).setLinkUrl(values[i][j]).build();

        // リンクURLをリンクテキストで上書きする
        sheet.getRange(range.getRow() + i, range.getColumn() + j).setRichTextValue(new_link_url);

      }
    }
  }
}

関連するアプリ


【GASで品質向上】特定のセルが編集されたときにメッセージを表示する

特定のセルが編集されたときにメッセージを表示するGoogle Apps Scriptです。編集をさせたくないときは保護してしまえばよいのですが、編集後に「本当にその内容で大丈夫?」と振り返って欲しいときに使えるかもしれません。ユーザによるスクリプトの動作承認は不要です。

【GASで品質向上】特定のセルが編集されたときにメールで通知する

特定のセルが編集されたときにメールを送信するGoogle Apps Scriptです。大事な部分が更新された時にすぐに知りたいときに使えるかもしれません。

【GASで品質向上】長い数式が入っているセルにメモを入れてもらう

一定の文字数以上で構成された数式が入っているセルを探し、そのセルにメモが入っているかどうかをチェックするGoogle Apps Scriptです。長い数式はわかりにくいので説明を書いてもらうために作りました。

【GASで時短】全角数字を半角数字に変換する

全角で入力された数字を半角の数字に変換するGoogle Apps Scriptです。全角半角が入り混じったデータを半角に揃えたいときにどうぞ。

【GASで時短】半角数字を全角数字に変換する

半角で入力された数字を全角の数字に変換するGoogle Apps Scriptです。全角→半角版を作ったので逆バージョンも作りました。全角にしたい人は・・・少なそうな気もしますが・・・

【GASで品質向上】全角英数が入力されたらアラートを出す

スプレッドシートに「全角の数字、アルファベット」が入力されたら警告を表示するGoogle Apps Scriptです。全角が許されない現場にどうぞ。

タグ一覧

最新のアプリ

人気のアプリ

ページトップに戻る
myfunc.jp