function onOpen() { var ui = SpreadsheetApp.getUi(); // ユーザーインターフェースを取得 var ss = SpreadsheetApp.getActiveSpreadsheet(); var settingsSheet = ss.getSheetByName('設定用シート'); // 設定用シート var h5Value = settingsSheet.getRange('H5').getValue(); // H5セルの値を取得 // H5セルの値が0より大きい場合にaddUniqueNamesToSettingsSheetを実行 if (h5Value > 0) { // ユーザーに「処理中」のメッセージを表示 ui.alert('処理中です。完了メッセージが出るまで、お待ちください...');
addUniqueNamesToSettingsSheet();
// 処理が終了したら、ユーザーに「処理完了」のメッセージを表示 ui.alert('処理が完了しました。操作を開始できます。'); } }
function addUniqueNamesToSettingsSheet() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var settingsSheet = ss.getSheetByName('設定用シート'); // 設定用シートを取得 var dataRange = settingsSheet.getRange('C8:C22').getValues(); // 設定用シートのC8:C22範囲の値を取得 var existingNames = [];
// 設定用シートのC8:C22範囲にすでに存在する名前をリスト化 for (var i = 0; i < dataRange.length; i++) { if (dataRange[i][0] !== '') { existingNames.push(dataRange[i][0]); } }
// シート1~シート31の名前を取得して、設定用シートに追加 for (var sheetIndex = 1; sheetIndex <= 31; sheetIndex++) { var sheet = ss.getSheetByName(sheetIndex.toString()); // シート名が1~31のシートを取得 if (!sheet) continue; // シートが存在しない場合はスキップ
var names = sheet.getRange('B8:B106').getValues(); // B8:B106範囲の名前を取得
// シートの名前を確認して設定用シートにない名前を追加 for (var i = 0; i < names.length; i++) { var name = names[i][0]; if (name && existingNames.indexOf(name) === -1) { // 名前が設定用シートにない場合、C8:C22の空白セルに追加 for (var j = 0; j < dataRange.length; j++) { if (dataRange[j][0] === '') { // 空白セルに追加 settingsSheet.getRange('C' + (8 + j)).setValue(name); existingNames.push(name); // 追加した名前をリストに追加 dataRange = settingsSheet.getRange('C8:C22').getValues(); break; // 最初の空白セルに追加したら次の名前に進む } } } } }}
function updateFormulaInSheets() { var ss = SpreadsheetApp.getActiveSpreadsheet(); for (var i = 1; i <= 31; i++) { var sheet = ss.getSheetByName(i.toString()); // シート名が "1" から "31" のシートを取得 if (sheet) { sheet.getRange("W7").setFormula("=SUM(W8:W107)"); // W7セルに数式を設定 sheet.getRange("X7").setFormula("=SUM(X8:X107)"); // W7セルに数式を設定 } } SpreadsheetApp.flush(); // 変更を反映}
function deleteRowsInSheets() { var ss = SpreadsheetApp.getActiveSpreadsheet(); for (var i = 1; i <= 31; i++) { var sheet = ss.getSheetByName(i.toString()); // シート名が "1" から "31" のシートを取得 var rowCount = sheet.getMaxRows(); // シートの総行数を取得 if (rowCount >= 108) { if (sheet) { sheet.deleteRows(108, 946); // 108行目から1053行目(946行分)を削除 } } } var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("設定用シート"); // 設定用シートを取得 var totalRows = sheet.getMaxRows(); var rowsToDelete = totalRows - 58; // 59行目から最後までの行数(削除する行数) if (rowsToDelete >= 1) { if (sheet) { sheet.deleteRows(59, rowsToDelete); } } var totalColumns = sheet.getMaxColumns(); var ColumnsToDelete = totalColumns - 16; if (ColumnsToDelete >= 1) { if (sheet) { sheet.deleteColumns(17, ColumnsToDelete); } }
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("計算用シート"); // 設定用シートを取得 var totalRows = sheet.getMaxRows(); var rowsToDelete = totalRows - 260; // 261行目から最後までの行数(削除する行数) if (rowsToDelete >= 1) { if (sheet) { sheet.deleteRows(261, rowsToDelete); } } var totalColumns = sheet.getMaxColumns(); var ColumnsToDelete = totalColumns - 32; if (ColumnsToDelete >= 1) { if (sheet) { sheet.deleteColumns(33, ColumnsToDelete); } }
SpreadsheetApp.flush(); // 変更を反映}
function hideWXColumnsInSheets() { var ss = SpreadsheetApp.getActiveSpreadsheet(); for (var i = 1; i <= 31; i++) { var sheet = ss.getSheetByName(i.toString()); // シート名が "1" から "31" のシートを取得 if (sheet) { sheet.hideColumns(sheet.getRange("W:X").getColumn(), 2); // W列~X列を非表示にする } } SpreadsheetApp.flush(); // 変更を反映}
function unhideAllColumns() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheets = ss.getSheets(); sheets.forEach(function(sheet) { var lastColumn = sheet.getLastColumn(); // 最後の列を取得 if (lastColumn > 0) { sheet.showColumns(1, lastColumn); // すべての列を表示 } }); SpreadsheetApp.flush(); // 変更を反映}
function hideWXColumnsInSheets() { var ss = SpreadsheetApp.getActiveSpreadsheet(); for (var i = 1; i <= 31; i++) { var sheet = ss.getSheetByName(i.toString()); // シート名が "1" から "31" のシートを取得 if (sheet) { sheet.hideColumns(sheet.getRange("W:X").getColumn(), 2); // W列~X列を非表示にする } } SpreadsheetApp.flush(); // 変更を反映}