数字を入力すると横棒グラフを生成してくれるGoogle Apps Scriptです。グラフは画像ではなくテキストで表現されますので、メール等でグラフ的なものを送りたいときに役立つかもしれません。
特にありませんが、スプレッドシートのコンテナバインド型として実装しています。
上のメニューにある「スクリプト実行」から「棒グラフ(テキスト版)を生成する」を実行します。
グラフの値を聞かれますので半角数字で入力します。カンマ区切りで何個でも入力可能です。
サンプルとして10から100までを10刻みで入力してみました。
選択中のセルにグラフが出力されました!
もし値が入力されているセルを選択していると、上書きされてしまうのでご注意ください。
/**
* このスクリプトの説明、使い方はこちら。
* https://myfunc.jp/items/00133/index.html
*/
function onOpen() {
// スプレッドシートを開いたときに実行される関数
// UIの取得
const ui = SpreadsheetApp.getUi()
// メニューの表示名
const menu = ui.createMenu('スクリプト実行');
// メニューに追加するボタン
menu.addItem('棒グラフ(テキスト版)を生成する', 'generate_bar_graph_by_text');
// メニューを画面に追加する
menu.addToUi();
}
function generate_bar_graph_by_text() {
// プロンプトを表示するためにUIをオブジェクトを取得
const ui = SpreadsheetApp.getUi();
// グラフに使用する値を入力するプロンプトを表示
const response = ui.prompt('グラフの値をカンマ区切りで入力してください', '例:100,90,60,45', ui.ButtonSet.OK_CANCEL);
// キャンセルボタンが押されたらスクリプトを終了する
if (response.getSelectedButton() == ui.Button.CANCEL) {
return;
}
// 入力された数字をカンマで分割して配列にする
const graph_values = response.getResponseText().split(',');
// 生成したテキストグラフをしまっておく変数
let result = [];
// 入力された数字の数だけループ
for (let i = 0; i < graph_values.length; i++) {
// 数字の数だけ|(パイプ)を繰り返して棒グラフを作る。末尾には値も付与する。
let bar = '|'.repeat(graph_values[i]) + ' ' + graph_values[i];
// 作った棒グラフをしまっておく
result.push(bar);
}
// セルに書き込むために、各グラフを改行で連結する
cell_value = result.join('\n');
// アクティブなスプレッドシートオブジェクトを取得
const ss = SpreadsheetApp.getActiveSpreadsheet();
// 選択中のセル範囲を取得
const range = ss.getActiveRange();
// セルに書き込み
range.setValue(cell_value);
}