ご訪問ありがとうございます。
Googleシートマスターのひろしです。
前回
【GAS】Googleドキュメントにスプレッドシートで指定したデータを差し込む
今回は、とっても価値の高い方法をお伝えします。
これを知ることであなたは、
- Googleドキュメントでテキストにアクセスする方法がわかります。
- Googleドキュメントで特定の範囲に対してリンク付きにする方法がわかります。
なので、サクッとマスターして
と答えてあげてください。
ご質問
【GAS】Googleドキュメントにスプレッドシートで指定したデータを差し込む
スプレッドシートのセル内をURLにし、それを文字列ではなくリンクタイプのクリックできるURLで差し込みたいのですが難しいでしょうか
動画はこちら
ドキュメントはこちら
*クリックすることでシートが開きます。(コピーしてお使いください)コピーしてお試しください
スクリプト
/**
* 置換時にURLを埋め込めこむ
*/
function repwordaddurl() {
const SEARCH = '{関数名}' //検索文字列
const REPTEXT = 'SEQUENCE関数' //置換する文字列
const REPURL = 'https://technical.verybestcbp.com/?s=SEQUENCE' //埋め込むURL
const body = DocumentApp.getActiveDocument().getBody()
// body.replaceText(SEARCH, REPTEXT)
const paragraphs = body.getParagraphs()
paragraphs.forEach(p => {
let text = p.getText()
const match = text.match(SEARCH)
//一致する文字列あり
if (match) {
//開始位置と置換文字列の長さを取得
const index = match?.index
const linkLen = REPTEXT.length - 1
//文字列の置換し埋め込む
text = text.replace(SEARCH, REPTEXT)
p.setText(text)
//リンク付きにする
console.log("index=", index, " linkLen=", linkLen," REPURL=",REPURL)
p.editAsText().setLinkUrl(index, index + linkLen, REPURL)
}
})
}
ポイント
文字列の置換の場合は、getBody()したものに対しreplaceText()すれば
良かったのですが、
例)
const body = DocumentApp.getActiveDocument().getBody()
body.replaceText(“検索文字列”,”置換文字列”)
URLを埋め込む setLinkUrl は、getParagraphs したテキストに対して
行う必要があります。
しかもsetLinkUrlする際には、開始位置と長さを指定する必要があるので
なかなか面倒です。
とはいこれでリンクは埋め込めるので後は、スプレッドシートにおける
セル内のリンクの有無に応じて処理を変更すればいいです。
最後までご覧いただきありがとうございます。
つぎはこちら
【コピペでできる】 GoogleドキュメントにGスプレッドシートからデータを差し込む