Feel Physics Backyard

HoloLensの出張授業をする会社で、教材を開発しています

Googleスプレッドシートの表示形式をGoogle Apps Scriptで指定する で、グラフを見やすくする

前回までの流れは以下のページにまとめています:

f:id:weed_7777:20150821144355j:plain

上は、IoT温度計から送信する気温通知メールに添付するグラフですが、ちょっとわかりにくいですよね。なぜでしょう?それは、日時の表示がわかりにくいからです。

f:id:weed_7777:20150821144450j:plain

だいぶ分かりやすくなりましたね。

これをGoogle Apps Scriptでやる方法を探しました。まずは公式リファレンス。

Class Range - setNumberFormat() |  Apps Script  |  Google Developers

var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];

var cell = sheet.getRange("B2");
// Always show 3 decimal points
cell.setNumberFormat("0.000");

うーん、近いけどちょっと違う。それで他のものを探してみると・・・

www.relief.jp

ktkr!?

var bk = SpreadsheetApp.getActiveSpreadsheet();
var sh = bk.getActiveSheet();

sh.getRange("A3").setNumberFormat("[h]:mm:ss");
sh.getRange("A4").setNumberFormat("h:mm:ss");
sh.getRange("A5").setNumberFormat("h:mm:ss am/pm"); 
sh.getRange("A6").setNumberFormat("h:mm:ss a/p"); 

うーん、おしい!結局いろいろ試してみました。結論としては、以下のようにします:

cell.setNumberFormat("M/d h:mm");

スラッシュは am/pm a/p のときだけ午前午後を解釈されるんですね。で、それ以外の一般のケースでは文字列として解釈される、と。無事解決して良かったです。

ちなみにこのプロジェクトのコードは以下で公開しています。ご興味があれば、どうぞ!

github.com