diff --git a/changesInput.html b/changesInput.html index a63eaec..92d19a1 100644 --- a/changesInput.html +++ b/changesInput.html @@ -51,16 +51,16 @@ - レイアウトの調整 - バグの修正">
diff --git a/main.gs b/main.gs index d28f47f..99336fc 100644 --- a/main.gs +++ b/main.gs @@ -1,13 +1,13 @@ -// onOpen関数は変更不要です。 function onOpen() { var ui = SpreadsheetApp.getUi(); var menu = ui.createMenu('出版'); - menu.addItem('Google Chat に送信', 'showChangesDialog'); // 関数名を変更 + menu.addItem('変更内容を登録', 'showCommitRevision') + menu.addItem('Google Chat に送信', 'mergeMain'); menu.addToUi(); } // ユーザーに変更内容を尋ねるダイアログを表示する関数 -function showChangesDialog() { +function showCommitRevision() { const html = HtmlService.createTemplateFromFile('changesInput') .evaluate() .setTitle('変更内容を記述') @@ -15,14 +15,47 @@ function showChangesDialog() { SpreadsheetApp.getUi().showSidebar(html); } -// メニュー: Google Chat に送信 (変更内容の処理を含む) -function processAndSend(changes) { - // ユーザーがキャンセルした場合や何も入力しなかった場合の処理 - if (!changes) { - SpreadsheetApp.getUi().alert('出版がキャンセルされました。'); - return; +// 変更内容の保存 +function saveCommitRevision(changes) { + const activeSpreadsheet = SpreadsheetApp.getActiveSpreadsheet(); + const changelogSheet = activeSpreadsheet.getSheetByName('.changelog'); + const editorEmail = Session.getActiveUser().getEmail(); + + const timeStamp = new Date() + + var changelogSheet_array = [] + for (let i = 0; i < changes.length; i++) { + changelogSheet_array.push([timeStamp, editorEmail, changes[i], false]) } - + + changelogSheet.getRange(changelogSheet.getLastRow() + 1, 1, changelogSheet_array.length, changelogSheet_array[0].length).setValues(changelogSheet_array) +} + +// 変更内容の取得 +function getChangelogs(spreadsheetId, sheetName) { + const changelogSheet = SpreadsheetApp.openById(spreadsheetId).getSheetByName(sheetName); + const allChangelogs = changelogSheet.getRange(1, 1, changelogSheet.getLastRow(), changelogSheet.getLastColumn()).getValues(); + + var changelog = [] + var isMergedFlags = [] + var sellIndex = 1 + for (let i = 0; i < allChangelogs.length - 1; i++) { + if (allChangelogs[sellIndex][3] == false) { + changelog.push(allChangelogs[sellIndex]); + isMergedFlags.push([true]) + } else { + isMergedFlags.push([true]) + } + sellIndex += 1 + } + + changelogSheet.getRange(2, 4, changelogSheet.getLastRow()-1).setValues(isMergedFlags) + + return changelog +} + +// メニュー: Google Chat に送信 (変更内容の処理を含む) +function mergeMain() { const scriptProperties = PropertiesService.getScriptProperties(); const PARENT_FOLDER_ID = scriptProperties.getProperty("PARENT_FOLDER_ID"); const GOOGLE_CHAT_WEBHOOK_URL = scriptProperties.getProperty("GOOGLE_CHAT_WEBHOOK_URL"); @@ -35,6 +68,19 @@ function processAndSend(changes) { Logger.log('シート名: ' + sheetName); Logger.log('スプレッドシートID: ' + spreadsheetId); + // 変更内容の取得 + const changelogs = getChangelogs(ss.getId(), '.changelog'); + var changes = [] + for (let i = 0; i < changelogs.length; i++) { + changes.push(changelogs[i][2]) + } + + // バージョン表記の更新 + // '.config'!B2: バージョン情報が記載されたせる + const configSheet = ss.getSheetByName(".config") + const nowDocVer = configSheet.getRange("B2").getValue(); + const newDocVer = configSheet.getRange("B2").setValue(Number(nowDocVer) + 1); + // ブランチファイル(キャッシュファイル)を削除 deleteSheetsStartingWithBracket(spreadsheetId); @@ -62,4 +108,4 @@ function processAndSend(changes) { sendGooglechat(message_content, GOOGLE_CHAT_WEBHOOK_URL); SpreadsheetApp.getUi().alert('出版が完了しました。'); -} +} \ No newline at end of file