前提・実現したいこと
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}
ここにより詳細な情報を記載してください。
ソースをコピペして実行してみましたが、ちゃんと高さ変わりました。
どうやって myFunction を実行しているんでしょうか。
ありがとうございます
・ボタンを設置→スクリプトを割り当て
・スクリプトエディタで直接実行
両方で実行しています。
フォームから送信された文字列だと行の高さを変更できないような
処理がされているのでしょうか。。
両方だめってことでしょうか。
フォームとと紐付いているシートでも動きました。
今回のコードが全てになりますでしょうか?
より具体的な質問としては、
フォーム送信時をトリガーとした関数はないという認識で良いでしょうか?
お2人ともありがとうございます!
>両方だめってことでしょうか。
はい、両方だめです。。。
>今回のコードが全てになりますでしょうか?
今回のコードが全てです。
>フォーム送信時をトリガーとした関数はないという認識で良いでしょうか?
はい、こちらはないです!
今実行してみてもこんな状況です。。。
<実行前>
下記2つの行が混在
・高さが40pxの行
・データに合わせた高さの行
<実行後>
すべての行が下記になる
・データに合わせた高さの行
こんばんは。
>> <実行前>
>> 下記2つの行が混在
>> ・高さが40pxの行
>> ・データに合わせた高さの行
>> という報告ですが、
もともとすでに40pxにしていたりしますか?
myFunction()実行前の状態に於いて、以下の2つに当てはまる行、
①高さがすでに40pxで、40pxに高さを固定している行
②高さがすでに何らかの形で40pxであるにもかかわらず、行の性質として高さをデータに合わせるとなっている行
という行が混在していて、
myFunction()を実行すると、
Rookie_MK様のおっしゃるような、
・高さ及び見た目が変わらない(40px->40px)
・全ての行がデータに合わせた高さになる
という状態が生まれます。
重箱の隅をつつくような質問になり、
大変恐縮ではございますが、
もしよろしければ、
myFunction()実行前の実際の行の高さが40pxなのかどうかと、
フォントのサイズ、
この二点を教えてもらっても良いでしょうか?
大変ご丁寧に回答ありがとうございます。
>①高さがすでに40pxで、40pxに高さを固定している行
こちらはどうしても混在してしまいます。
この行があると不備がある、という事であればそもそも成したい事ができないため。
念の為下記回答させていただきます。
>myFunction()実行前の実際の行の高さが40pxなのかどうか
40pxもそれ以外も混在する、という状況です。
>フォントのサイズ
9
私の環境でRookie_MKのスクリプトを実行した後の挙動を共有いたします。
スクリプト実行後、
高さは40pxになったと思われます。
これは、手動で40pxに合わせた行と見た目が一緒だったので、
上記のように判断いたしました。
後、40pxになったと思われる行の、
高さを変更するインターフェースを表示した場合、
表記上はデータに合わせた高さになっておりましたが、
私の環境でその後にデータを入力しても、
高さは40pxのままに見えておりました。
以下、二点確認したいと思っております。
・スクリプト実行後、見た目の高さは変わっておりますか?
具体的には、
データが入力されている行の高さを手動で20pxにした後に、
スクリプトを実行したら、手動で20pxにしていた行の見た目の高さは変わりますか?
もしくは、高さ40px以外の行の見た目が40pxぽくなっておりますでしょうか?
・もし、見た目の高さが40pxに変わっていた場合、再度入力することで、データの高さに合わせた高さになってしまうのでしょうか?
何度も何度も質問を繰り返してしまい、
なかなか回答にたどり着かないことは、
大変恐縮でございますが、
現段階での私の回答としては、
表記がそうなっているだけで、
実務に影響ない気がする
になっております。