🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google Apps Script

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

Q&A

2回答

5649閲覧

スプレッドシートの全行の高さを全て40pxに設定したい

Rookie_MK

総合スコア0

Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google Apps Script

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

0グッド

1クリップ

投稿2021/01/06 13:35

前提・実現したいこと

GASで下記を実現したいです。
「スプレッドシートの全行の高さを全て40pxに設定する」

<背景>
事前に行の高さを指定していても、
フォームから連携したデータをスプレッドシートに記入するとき、
行の高さがサイズに合わせて変更されてしまう。

・行数が多い
・スプレッドシートに疎い人も対象シートを触る
→ボタン1クリックで作業を完了させたい

やったこと

・ログ出力
・エラーはなし
変更前も変更後も「40px」に設定されているはずだが、
実際の見た目は変わっていない。

該当のソースコード

GAS

1function myFunction() { 2 3 //アクティブシートを取得 4 var ss = SpreadsheetApp.getActiveSpreadsheet(); 5 6 // そのスプレッドシートの最初のシートを取得 7 var sheet = SpreadsheetApp.getActiveSheet(); 8 console.log( sheet.getName() ); 9 10 // 最終行を取得 11 var lastrow = sheet.getLastRow(); 12 console.log('lastrow:' + lastrow ); 13 14 for(var i = 1; i <= lastrow; i++){ 15 //i行目の高さを取得 16 console.log('変更前のRowHeight(i):' + sheet.getRowHeight(i) ); 17 18 //i行目を40pxに設定 19 sheet.setRowHeight(i, 40); 20 21 //i行目の高さを取得 22 console.log('変更後のRowHeight(i):' + sheet.getRowHeight(i) ); 23 24 console.log('i:' + i ); 25 } 26 27}

ここにより詳細な情報を記載してください。

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

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

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

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

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

draq

2021/01/07 01:21

ソースをコピペして実行してみましたが、ちゃんと高さ変わりました。 どうやって myFunction を実行しているんでしょうか。
Rookie_MK

2021/01/07 01:33

ありがとうございます ・ボタンを設置→スクリプトを割り当て ・スクリプトエディタで直接実行 両方で実行しています。 フォームから送信された文字列だと行の高さを変更できないような 処理がされているのでしょうか。。
draq

2021/01/07 02:11

両方だめってことでしょうか。 フォームとと紐付いているシートでも動きました。
退会済みユーザー

退会済みユーザー

2021/01/07 14:43

今回のコードが全てになりますでしょうか? より具体的な質問としては、 フォーム送信時をトリガーとした関数はないという認識で良いでしょうか?
Rookie_MK

2021/01/10 07:54

お2人ともありがとうございます! >両方だめってことでしょうか。 はい、両方だめです。。。 >今回のコードが全てになりますでしょうか? 今回のコードが全てです。 >フォーム送信時をトリガーとした関数はないという認識で良いでしょうか? はい、こちらはないです!
Rookie_MK

2021/01/10 08:00

今実行してみてもこんな状況です。。。 <実行前> 下記2つの行が混在 ・高さが40pxの行 ・データに合わせた高さの行 <実行後> すべての行が下記になる ・データに合わせた高さの行
退会済みユーザー

退会済みユーザー

2021/01/12 14:21

こんばんは。 >> <実行前> >> 下記2つの行が混在 >> ・高さが40pxの行 >> ・データに合わせた高さの行 >> という報告ですが、 もともとすでに40pxにしていたりしますか? myFunction()実行前の状態に於いて、以下の2つに当てはまる行、 ①高さがすでに40pxで、40pxに高さを固定している行 ②高さがすでに何らかの形で40pxであるにもかかわらず、行の性質として高さをデータに合わせるとなっている行 という行が混在していて、 myFunction()を実行すると、 Rookie_MK様のおっしゃるような、 ・高さ及び見た目が変わらない(40px->40px) ・全ての行がデータに合わせた高さになる という状態が生まれます。 重箱の隅をつつくような質問になり、 大変恐縮ではございますが、 もしよろしければ、 myFunction()実行前の実際の行の高さが40pxなのかどうかと、 フォントのサイズ、 この二点を教えてもらっても良いでしょうか?
Rookie_MK

2021/01/13 15:24

大変ご丁寧に回答ありがとうございます。 >①高さがすでに40pxで、40pxに高さを固定している行 こちらはどうしても混在してしまいます。 この行があると不備がある、という事であればそもそも成したい事ができないため。 念の為下記回答させていただきます。 >myFunction()実行前の実際の行の高さが40pxなのかどうか 40pxもそれ以外も混在する、という状況です。 >フォントのサイズ 9
退会済みユーザー

退会済みユーザー

2021/01/14 13:29

私の環境でRookie_MKのスクリプトを実行した後の挙動を共有いたします。 スクリプト実行後、 高さは40pxになったと思われます。 これは、手動で40pxに合わせた行と見た目が一緒だったので、 上記のように判断いたしました。 後、40pxになったと思われる行の、 高さを変更するインターフェースを表示した場合、 表記上はデータに合わせた高さになっておりましたが、 私の環境でその後にデータを入力しても、 高さは40pxのままに見えておりました。 以下、二点確認したいと思っております。 ・スクリプト実行後、見た目の高さは変わっておりますか? 具体的には、 データが入力されている行の高さを手動で20pxにした後に、 スクリプトを実行したら、手動で20pxにしていた行の見た目の高さは変わりますか? もしくは、高さ40px以外の行の見た目が40pxぽくなっておりますでしょうか? ・もし、見た目の高さが40pxに変わっていた場合、再度入力することで、データの高さに合わせた高さになってしまうのでしょうか? 何度も何度も質問を繰り返してしまい、 なかなか回答にたどり着かないことは、 大変恐縮でございますが、 現段階での私の回答としては、 表記がそうなっているだけで、 実務に影響ない気がする になっております。
guest

回答2

0

リンクだけになりますが???? これで解決できました。

https://stackoverflow.com/questions/64098358/google-sheets-apps-script-setrowheight-with-text-inside-cell

投稿2021/06/07 00:46

dobby618

総合スコア302

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

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

0

今実行してみてもこんな状況です。。。

<実行前>
下記2つの行が混在
・高さが40pxの行
・データに合わせた高さの行

<実行後>

すべての行が下記になる
・データに合わせた高さの行

確認しましたが、スクリプトで setRowHight をすると、行の高さの設定が"データに合わせる"に強制変更される動作があるようです。
(画面左端の行見出し(行番号が1、2と縦にならんでいる箇所を右クリックして"単一行の高さのサイズを変更"をすると設定が確認できます)

手動で高さを変更した場合には、固定の高さの設定になりますが、手動で高さ変更して直後にその手動で高さを変更した操作を記録したマクロを再実行しても"データに合わせる"にかわるので、こう判断しました。

Google Sheet 側で意図した仕様かはともかくこういう動きをする以上、機能要望するくらいしか打てる手がないと思いました。(autoresizerows が別にあって、他に有効な api がないことからすると、仕様不備かと邪推しますが)

不慣れな人に簡単な UI を用意したい、という目的だと有効な代替案がなさそうですね。
(あとは、定型操作を自動化するなどして、人間の負担を別の面で減らす方向を、私だったら考えてみます)

投稿2021/01/13 15:00

papinianus

総合スコア12705

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問