質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

2回答

2382閲覧

Googleスプレッドシートのテキストが入っているセルにリンクをつけたい

Junkak

総合スコア20

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

1クリップ

投稿2021/10/02 12:28

編集2021/10/04 06:45

下記はGoogleスプレッドシートの空のセルにリンクのついたテキストを入れる関数ですが、すでにテキストが入っているセルにリンクをつけたい場合はどのようにすればよろしいでしょうか。

GoogleAppsScript

1function newRichTextValue1(){ 2 const cell = SpreadsheetApp.getActive().getRange('A1'); 3 const value = SpreadsheetApp.newRichTextValue() 4 .setText("テキスト") 5 .setLinkUrl("https://************") 6 .build(); 7 cell.setRichTextValue(value); 8}

参考:GASでスプレッドシートのリッチテキストルールを作成

追記:
1つのセルだけにリンクがついている行をappendRowで別シートにコピーしたいのですが、appendRowと上記の関数が上手く合わずに困っています。
(「てすと1〜4」、「テスト1〜6」と続くはずなのですが、上から上書きされているようです。しかもテスト1〜3が出力されていません)
イメージ説明
コードは下記の通りです。

GoogleAppsScript

1 for(let i = 2; i <= 25; i++) { 2 //A列にチェックがあれば 3 if(activeSheet.getRange(i, 1).getValue() == true) { 4 const row = activeSheet.getRange(i, 2, 1, 12).getValues(); 5 pastSheet.appendRow(row[0]); 6 7 const linkUrl = SpreadsheetApp.newRichTextValue() 8 .setText(activeSheet.getRange(i, 6).getValue()) 9 .setLinkUrl(activeSheet.getRange(i, 6).getRichTextValue().getLinkUrl()) 10 .build(); 11 pastSheet.getRange(i, 5).setRichTextValue(linkUrl); 12 13 activeSheet.deleteRow(i); 14 i = i - 1; 15 } 16 }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

A1fooが入っているとして、fooを上書きせずにリンクを設定したい、と理解しました。こんな感じでどうでしょうか。

lang

1function newRichTextValue1(){ 2 const cell = SpreadsheetApp.getActive().getRange('A1'); 3 const value = SpreadsheetApp.newRichTextValue() 4 .setText(cell.getValue()) 5 .setLinkUrl("https://************") 6 .build(); 7 cell.setRichTextValue(value); 8}

投稿2021/10/02 12:44

jhashimoto

総合スコア838

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Junkak

2021/10/03 01:55

ありがとうございます。setTextを省略してリンクだけをつけるということはどうやらできないようですね。
guest

0

そのまま実行すれば上書きされるだけだと思います。

投稿2021/10/02 12:35

itagagaki

総合スコア8402

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Junkak

2021/10/03 01:55 編集

ありがとうございます。そのようですね。 for文でシートに1行ずつappendRowした後に、for文の中でこの関数を使っても同じ場所にリンクがつかず悩んでいます。
Junkak

2021/10/03 02:21

appendRowの際に一緒にリンクもついてくる方法ってありませんかね。^^;
itagagaki

2021/10/03 02:34

質問に書かれたコードではA1のセルにセットしていますけど、そこは変えているのでしょうか。 ちょっとよくわからないので、そのfor文を含む、試したコード全体を、あらためて質問に貼ってみてもらえますか?
Junkak

2021/10/03 02:40

追記しました。
Junkak

2021/10/04 08:06

シートが変わるので、行のカウントも変わるために、出力される行がズレているのだと思うのですが、いい解決法がないか探しています。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問