私のGoogle Spreadsheet
は一部のフォーマットを保持しません。たとえば、シート全体でフォントサイズを12に設定するたびに、新しくコピーされたデータはより小さいフォントサイズを使用します。
これは、3月にNew Sheets
にアップグレードした後に問題になり始めました。
問題を再現する例 sheet :
再現手順
12
に設定しますE
にコピーして貼り付けます期待される結果
12
です実際の結果
smaller
フォントサイズです更新:日付のフォーマットの問題を再現するために、別の sheet を作成しました。
再現手順
DD MMM YYY
に設定します(2015年6月1日など)期待される結果
LMDT
イベントでトリガーされるOnEdit
イベントはフォーマットを保持します:2015年6月1日実際の結果
LMDT
イベントでトリガーされたOnEdit
イベントは、フォーマットを保持しません:2015年1月6日07:20:34
time = Utilities.formatDate(time, "UTC", "dd-MM-yyyy **HH:mm:ss** ");
s.getRange(r.getRow(), LMDTCol).setValue(time);
はい、書式設定はdd-MM-yyyy
HH:mm:ssに設定されますが、過去5年間ほど、列の書式設定は書式設定よりも優先されましたスクリプトで設定します。
確かに、プレーンテキストを貼り付け Ctrl-V その結果、デフォルトサイズは10になります。プレーンテキストが入っていても、貼り付けはセルのフォーマットを上書きすると理解されているようです。
解決策は、を使用して貼り付けることです Ctrl-Shift-V、つまり、値のみを貼り付ける。次に、テキストがどこから来たかに関係なく、スプレッドシートで設定されているように、フォントサイズは12 ptです。
通常、.setValue(value)
を使用するだけでは、セルの既存の書式設定が残ります。たとえば、セルA1が「2015年6月1日」としてフォーマットされている場合、実行
sheet.getRange("A1").setValue(new Date());
そのフォーマットを尊重します。
スクリプトがUtilities.formatDate()
で異なるフォーマットを明示的に適用する場合にのみ、フォーマットが変更されます。これは予想されることであり、古いバージョンが異なる動作をするという事実は、より多くのバグまたは貧弱な設計です。
新しいシートには、多少の 異なるフォーマット機能 があることが知られています。
移行は、一部のスクリプトの重大な変更になる可能性があります。たとえば、1つのセルに50000文字を超える文字を保存しようとしたため、スクリプトの1つが動作しなくなりました(古いバージョンでは可能ですが、新しいバージョンではできませんでした)。