From 618934eee6966d562874987a36da5752b3aa3d98 Mon Sep 17 00:00:00 2001 From: tsukuboshi <53089786+tsukuboshi@users.noreply.github.com> Date: Mon, 11 Mar 2024 17:29:05 +0900 Subject: [PATCH] =?UTF-8?q?=E3=83=87=E3=83=95=E3=82=A9=E3=83=AB=E3=83=88?= =?UTF-8?q?=E8=89=B2=E3=82=92=E5=B7=A5=E6=95=B0=E9=9B=86=E8=A8=88=E5=AF=BE?= =?UTF-8?q?=E8=B1=A1=E3=81=8B=E3=82=89=E5=89=8A=E9=99=A4/=E3=82=B0?= =?UTF-8?q?=E3=83=A9=E3=83=95=E4=BD=9C=E6=88=90=E6=A9=9F=E8=83=BD=E3=82=92?= =?UTF-8?q?=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 -- src/example-module.ts | 32 +++++++++++++++++++++++++++++++- 2 files changed, 31 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index e22d49e..dab2327 100644 --- a/README.md +++ b/README.md @@ -85,7 +85,6 @@ export CALENDER_ID_ARRAY="['xxxxxxxx','xxxxxxxx','xxxxxxxx']" 6. 環境変数として、Google Calenderの予定の色に対応したラベル名を指定(使用しない色については空文字を設定してください) ```bash -export DEFAULT_LABEL="" export LAVENDER_LABEL="" export SAGE_LABEL="" export GRAPE_LABEL="" @@ -110,7 +109,6 @@ function handler(): void { main( ${CALENDER_ID_ARRAY}, { - デフォルト: '${DEFAULT_LABEL}', ラベンダー: '${LAVENDER_LABEL}', セージ: '${SAGE_LABEL}', ブドウ: '${GRAPE_LABEL}', diff --git a/src/example-module.ts b/src/example-module.ts index 933a1ea..08e05ab 100644 --- a/src/example-module.ts +++ b/src/example-module.ts @@ -255,7 +255,7 @@ function calculateWorkHoursByColor( status = 'ETC'; } // ステータスがOWNER, YES, ETCの予定のみを対象とする - if (status === 'OWNER' || status === 'YES' || status === 'ETC') { + if (status === 'OWNER' || status === 'YES') { // イベントの情報を取得 const eventContent = getEventContent(event); let color = eventContent.color; @@ -285,6 +285,9 @@ function writeWorkHoursToSheet( colorMap: { [key: string]: string }, LabelMap: { [key: string]: string } ): void { + // デフォルトカラーの色番号('0')の工数をMapから削除する + workHoursMap.delete('0'); + // ヘッダー行を考慮して2行目から開始 let row = 2; @@ -301,6 +304,33 @@ function writeWorkHoursToSheet( sheet.getRange('J' + row).setValue(hours); row++; }); + + // ラベル名一覧と工数合計が記載されている範囲を指定 + const dataRange = sheet.getRange('I2:J' + (row - 1)); + + // シートから既存のチャートを取得 + const charts = sheet.getCharts(); + + // 既存のチャートがあれば更新、なければ新しく作成 + if (charts.length > 0) { + // 既存のチャートを更新 + const chart = charts[0]; // ここでは最初のチャートを更新対象とします + const updatedChart = chart + .modify() + .addRange(dataRange) // データ範囲を更新 + .setPosition(1, 12, 0, 0) // 必要に応じて位置を調整 + .build(); + sheet.updateChart(updatedChart); + } else { + // 新しいチャートを作成 + const newChart = sheet + .newChart() + .setChartType(Charts.ChartType.BAR) // 帯グラフ(棒グラフ)を指定 + .addRange(dataRange) + .setPosition(1, 12, 0, 0) // チャートをシート上のL列(12列目)の1行目に設定 + .build(); + sheet.insertChart(newChart); + } } // 現在の年と月を取得する関数