リンクが設定されているが、表示されているURLと実際のリンク先のURLが違う・・・稀にありますよね。表示されているURLを正としてリンクを修正するGoogle Apps Scriptです。
特にありません。今お使いのスプレッドシートに組み込めます。
サンプルデータとして、見た目は「https://www.google.co.jp」だけど、設定されているリンクは当サイトというものを用意しました。
ありますよね、こういうやつ。
このスクリプトは選択中のセルに対して動作しますので、変換したい範囲を選択してください。
上のメニューにある「スクリプト実行」から「リンクテキストでリンク先URLを上書きする」を実行します。
「選択範囲にあるリンクに対して、リンクテキストを正としてリンクURLを書き換えます よろしいですか?」と聞いてきます。問題無ければOKを、中止したいときはキャンセルを押します。
量によりますが、数秒で処理が完了するはずです。
表示されているURLと実際のリンク先が一致しました!
このサンプルアプリは、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);
}
}
}
}
特定のセルが編集されたときにメッセージを表示するGoogle Apps Scriptです。編集をさせたくないときは保護してしまえばよいのですが、編集後に「本当にその内容で大丈夫?」と振り返って欲しいときに使えるかもしれません。ユーザによるスクリプトの動作承認は不要です。
特定のセルが編集されたときにメールを送信するGoogle Apps Scriptです。大事な部分が更新された時にすぐに知りたいときに使えるかもしれません。
一定の文字数以上で構成された数式が入っているセルを探し、そのセルにメモが入っているかどうかをチェックするGoogle Apps Scriptです。長い数式はわかりにくいので説明を書いてもらうために作りました。
全角で入力された数字を半角の数字に変換するGoogle Apps Scriptです。全角半角が入り混じったデータを半角に揃えたいときにどうぞ。
半角で入力された数字を全角の数字に変換するGoogle Apps Scriptです。全角→半角版を作ったので逆バージョンも作りました。全角にしたい人は・・・少なそうな気もしますが・・・
スプレッドシートに「全角の数字、アルファベット」が入力されたら警告を表示するGoogle Apps Scriptです。全角が許されない現場にどうぞ。