Skip to content

Instantly share code, notes, and snippets.

@kotobuki
Last active January 12, 2017 08:17
Show Gist options
  • Save kotobuki/bf120aeae5e5e082d850ba866ccbbebe to your computer and use it in GitHub Desktop.
Save kotobuki/bf120aeae5e5e082d850ba866ccbbebe to your computer and use it in GitHub Desktop.
スプレッドシートに記入された値をチャートにして定期的にメールで送信する ref: http://qiita.com/mayfair/items/997bc2a950def4e32c02
function onDailyTimeBasedTrigger(event) {
// 現在ブラウザで開いているシートを取得する
var sheet = SpreadsheetApp.getActiveSheet();
// スクリプトのプロパティからメールの受信者を取得
var scriptProperties = PropertiesService.getScriptProperties();
var recipient = scriptProperties.getProperty('recipient');
// トリガーを削除
deleteTrigger();
// データテーブルを作成
var data = Charts.newDataTable();
data.addColumn(Charts.ColumnType.STRING, 'Time');
data.addColumn(Charts.ColumnType.NUMBER, 'Temperature');
// アクティブなシートを取得する
var sheet = SpreadsheetApp.getActiveSheet();
// ヘッダ行を除いて全ての値を取得し、データテーブルに追加する
var values = sheet.getRange(1, 1, sheet.getLastRow(), 2).getValues();
for (var row in values) {
data.addRow([values[row][0], values[row][1]]);
}
// データテーブルをビルド
data.build();
// チャートを生成してビルド
var chart = Charts.newLineChart()
.setDataTable(data)
.setTitle('本日のレポート')
.setDimensions(1024, 768)
.build();
MailApp.sendEmail(
recipient,
'本日のレポート',
'本日のレポートです。',
{ attachments: chart });
}
// トリガーをセット
function setTrigger() {
// 現在の時刻でDateオブジェクトを生成
var timeofday = new Date();
// トリガーを発生したい時、分、秒にセット
timeofday.setHours(17);
timeofday.setMinutes(00);
timeofday.setSeconds(00);
ScriptApp.newTrigger("sendDailyReport").timeBased().at(timeofday).create();
}
// トリガーを削除
function deleteTrigger() {
var triggers = ScriptApp.getProjectTriggers();
for (var i in triggers) {
if (triggers[i].getHandlerFunction() == "sendDailyReport") {
ScriptApp.deleteTrigger(triggers[i]);
}
}
}
// 1日のレポートを送信
function sendDailyReport() {
deleteTrigger();
// レポート作成と送信の処理をここに
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment