ご訪問ありがとうございます。
Googleシートマスターのひろしです。
今回は、とっても価値の高い方法をお伝えします。
これを知ることであなたは、
-
- URLからサイト名を取得する方法がわかります。
- ボタン(画像)をクリックすることでURLを開くことができます。
なので、サクッとマスターして
と答えてあげてください。
動画はこちら
シートはこちら
*クリックすることでシートが開きます。(コピーしてお使いください)
基本形
function openUrl() {
const url = 'https://www.yahoo.co.jp/'; // ★開きたいURLに変更
const html = HtmlService.createHtmlOutput('<script>window.open("' + url + '", "_blank");google.script.host.close();</script>');
SpreadsheetApp.getUi().showModalDialog(html, `${url}を開いています...`);
}
ポイント
GASから直接、URLを開くことはできません。
なので、HTML上からURLを開きます。
ボタンに割り当てる方法↓
【GAS】GAS(マクロ)を手軽にメニューやボタンから実行する方法(カスタムメニュー)
URLをシート上に記載
どうせならURLをスプレッドシートに記載してみましょう。
(このURLをクリックすればそもそもボタンは不要ですが^^)
以下を追加
const sh = SpreadsheetApp.getActiveSheet()
const url = sh.getRange("L1").getValue() //URLを記載したセル
もうちょっとかっこよくするためにメッセージ内の文言を
URLではなく、「タイトル」にしましょう。
タイトルの取得
IMPORTXML(URL, XPathクエリ, locale)
XPathクエリに”//title”を指定することで、タイトルが取得できます。
=IMPORTXML(URL, “//title”)
ただ、これだと2箇所スプレッドシートから読み込むことになるので
GAS上でタイトルを取得しましょう。
以下の関数でタイトルが読み込めます。
getTitleFromURL(URL)
そして読み込んだタイトルをメッセージボックスに入れたバージョン。
function openUrltitle() {
const sh = SpreadsheetApp.getActiveSheet()
const url = sh.getRange("L1").getValue()
const title = getTitleFromURL(url)
const html = HtmlService.createHtmlOutput('<script>window.open("' + url + '", "_blank");google.script.host.close();</script>');
SpreadsheetApp.getUi().showModalDialog(html, `${title}を開いています...`);
}
//URLからタイトルを取得する
function getTitleFromURL(url) {
const response = UrlFetchApp.fetch(url);
const html = response.getContentText();
const match = html.match(/<title[^>]*>([^<]+)<\/title>/);
console.log(match)
return match ? match[1] : "タイトル未取得";
}
最後までご覧いただきありがとうございます。
つぎはこちら
【GAS】VLOOKUPをやってみる(Javascriptの配列に対するfind,map)

