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

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

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

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

Q&A

解決済

2回答

694閲覧

セルの表示を、スプレッドシートの 「表示形式>テキストの折り返し>切り詰める」の設定にするとなるような状態にしたい。

koromo_t

総合スコア60

Google Apps Script

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

0グッド

0クリップ

投稿2018/03/08 08:02

編集2018/03/08 16:23

何度も現れてすみません! 今度はダメ元でお聞きします。

前提・実現したいこと

https://teratail.com/questions/116569の質問で、
「C列に入った文字列が14文字以上のとき、C列を最初から14文字だけに書き換える」
ということができました。見た目は理想通りでした。

そしてセルを確認すると、たしかに14文字だけになっていました。
でも本当は、14文字を切り出すというより、スプレッドシートの
「表示形式>テキストの折り返し>切り詰める」の設定にするとなるような状態にしたいのです。
そのような命令?は、できるのでしょうか?

現状

javaScript

1function juyonmoji() { 2 //変数spreadsheetに指定のスプレッドシートオブジェクトを取得します 3 var url = "***"; 4 var sheet = SpreadsheetApp.openByUrl(url); 5 var ss = SpreadsheetApp.getActiveSpreadsheet(); 6 var val4 = sheet.getRange('C'+ sheet.getLastRow()).getValue(); 7 if(val4.length >= 14){ 8 val4 = sheet.getRange('C'+ sheet.getLastRow()).setValue(val4.substring(0, 14)); 9 } 10}

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

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

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

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

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

guest

回答2

0

投稿2018/03/08 09:31

unz.hori

総合スコア1057

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

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

koromo_t

2018/03/08 09:42

回答ありがとうございます。 こちらのページは参考にして、試行済みです。 これだと、「表示形式>テキストの折り返し>はみ出す」の表示の仕方になると思うんですね。 理想は、右隣のセルが空白でも、はみ出さないように表示したいのですが、 私にはそういう命令を見つけることができなかったので、質問させていただきました。
unz.hori

2018/03/08 09:47

テキストの折り返しを有効にすればはみ出さないのでは?
koromo_t

2018/03/08 09:55

そうすると、たしかに横のセルにははみ出ないのですが、 セルがものすごく縦長になってしまいます…。 「はみ出す」と「折り返す」のいいとこ取りはできないのでしょうか…。 それらのいいとこ取りをしたのが「切り詰める」だと思うのですけど、 「切り詰める」はスプレッドシートの表示形式の選択肢のなかにあることなので、 それを指示する言葉もあるのではないかと思ったのですが。。
unz.hori

2018/03/08 10:01

折り返しを有効にしつつ、セルのサイズ(縦幅)を揃えればいいのではないかと。なんかちょっと調べた感じではtrue/falseで切り替えるような方法はない感じ。
koromo_t

2018/03/08 10:36 編集

そうですかー…。 確認はしていませんが、セルの縦幅を固定してしまうと、 おそらくほかの列の縦幅も同じになってしまうでしょうね。 それはそれで困るので、やはり現状(14文字だけ切り出し)がベターなのかもしれません。 考えてくださってありがとうございます!
koromo_t

2018/03/08 16:21

ここでプログラミング以外の話はNGだとはわかっているのですが、 horiさんのアイコン画像の顔の横にあるものはなんでしょう? 気になってしまったので、もしよければ教えてくださいw (ちなみにお名前は、「うんず ほり」と読めばよいのでしょうか?)
unz.hori

2018/03/08 21:47 編集

私の愚息ですな。もう十数年前のものですが...。ハンドルの読み方はお好きに。本人は(アンズドットホリ:Zじゃないホリ(意味は内緒w)のつもりですw)
koromo_t

2018/03/09 05:53

あっなるほど。なんか坊主頭のように見えたのですが、 やっぱりそうだったんですねw こう、寄り添う感じで…。 あっ、「un」は接頭辞のunだったんですねw 理解しました。 意味は‥、Zの人が周りにおられるのだと予想w おかげさまで、いろいろとすっきりしました! 教えていただき、ありがとうございます!
koromo_t

2018/03/09 06:09 編集

あのっ、何度もすみません。。今度こそ、これで終わりにしますので…>< 厚かましいお願いかもしれませんが、↑の私の回答のスクリプトのインデントは、 ルールに則れているでしょうか。もしよかったら、ちょっと添削していただけたら…。 前半は自信があるのですが、具体的には最下部の「range.sort」のところ、 ここはインデントしなくていいのでしょうか。 ネットで拾ってきたスクリプトをそのまま使っていると思うのですが、 ルール的にはインデントしないといけないような気もするのです。
unz.hori

2018/03/09 06:09

合ってますよ
koromo_t

2018/03/09 06:48

ありがとうございます~ インデントについて調べると、「レベルに応じてインデント」と書かれてあったのですが、 そのレベルがよくわからないという…(笑)。 sortはcodeで見ると太字になってませんが、ifと同じレベルってことなんですね。 たしかに、命令してますもんね、強いですよね。
unz.hori

2018/03/09 06:51

まぁ、インデントについては人のプログラムを見て覚えていってください。インデントがぐちゃぐちゃだとそれだけで読む気力をそがれていきますし。頭に入ってこないので変なインデントだった場合、私はよくそれを直すとこから始めたりしますw
koromo_t

2018/03/09 06:57

そうですね! これから、経験値を上げていきたいと思います!(笑) では改めて…、 長丁場のお付き合い、本当にありがとうございました! お疲れ様です! また、機会があれば、よろしくお願いしますね!
guest

0

自己解決

ちょっと閃きまして、
セルからはみ出すのがいやなのであれば、
セルからはみ出ない言葉に置き換えればいいのではないかと。
さっそく、「setValue()」を活用してみましたよ!
おかげで、シートが見やすくなりました。

置き換え部分のスクリプトだけ抜き取るとなるとややこしいので、
一部ではなく、WEB拍手に使ったスクリプトを全部載せておきます。
スクリプトのほうも、少々長くなってきたので、メモを追記しました。
あと、インデントも意識してみました。あんまり自信はありませんが…(笑)。

こういうものが完成しました。
https://goo.gl/forms/TTF63KTwHD102zLg2
おかげさまで、いまのところ、「こうしたいのに…」と思うところはなくなりました!
本日は、長丁場のお付き合い、本当にありがとうございました! お疲れ様です!
また、機会があれば、よろしくお願いしますね!

javaScript

1function sendNotification() { 2 //変数spreadsheetに指定のスプレッドシートオブジェクトを取得します 3 var url = "***"; 4 var sheet = SpreadsheetApp.openByUrl(url); 5 var ss = SpreadsheetApp.getActiveSpreadsheet(); 6 var val = sheet.getRange('B'+ sheet.getLastRow()).getValue(); 7 var val2 = sheet.getRange('D'+ sheet.getLastRow()).getValue(); 8 var val3 = sheet.getRange('A'+ sheet.getLastRow()).getValue(); 9 var val4 = sheet.getRange('C'+ sheet.getLastRow()).getValue(); 10 11 // もし列Dの値に異動があれば 12 if(val2!=''){ // = if you edit data in col D 13 var dAddress = "***"; 14 var subject = "【WEB拍手】新着コメントのお知らせ"; 15 var content = "名前:"+val+"\n"; 16 // 列Cにメッセージありと書き込む 17 val4 = sheet.getRange('C'+ sheet.getLastRow()).setValue("メッセージあり"); 18 // メール通知する 19 content += Utilities.formatDate(val3,'JST','yyyy年M月d日 H時m分')+"\n"; 20 content += "**********************\n"+val2; 21 MailApp.sendEmail(dAddress,subject,content); 22 } 23 // もし列Dの値に異動がなければ 24 else{ 25 // 列Cに拍手のみと書き込む 26 val4 = sheet.getRange('C'+ sheet.getLastRow()).setValue("拍手のみ"); 27 } 28 29 // タイムスタンプで降順に並び替え 30 var target_col = 1; 31 var asc = false; 32 var start_row = 2; 33 var start_col = 1; 34 35 var sh = SpreadsheetApp.getActiveSheet(); 36 var last_col = sh.getLastColumn(); 37 var last_row = sh.getLastRow(); 38 var num_rows = last_row - (start_row - 1); 39 var num_cols = last_col - (start_col - 1); 40 var range = sh.getRange(start_row, start_col, num_rows, num_cols); 41 range.sort([{ 42 column: target_col, 43 ascending: asc 44 }]); 45}

投稿2018/03/08 11:48

編集2018/03/08 11:49
koromo_t

総合スコア60

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問