今回やりたかったこと
A2に複数の英文が入っていて
A3が空白の行で
A4に英文が入っている
このようなシートがあって
A2の文章を一文ずつ分けてそれぞれ一行にして
空白セルを削除して
このように上書きする
コード.gs
function setArrayToRange() { var sheet = SpreadsheetApp.getActiveSheet(); var startRow = sheet.getActiveRange().getRow(); var lastRow = sheet.getLastRow(); var numRows = (lastRow - startRow) + 1; var rangeValues = getRangeValues(sheet, startRow, numRows); var singleSentences = splitToSingleSentece(rangeValues); clearTargetRange(sheet, startRow, numRows); var arrays = removeBlankRows(singleSentences) var range = sheet.getRange(startRow, 1, arrays.length, 1); range.setValues(arrays); } function removeBlankRows(rangeValues) { var arrays = []; for(var i = 0; i < rangeValues.length; i++) { var value = rangeValues[i]; if(value !== '') { arrays.push([value]); } } return arrays; } function getRangeValues(sheet, startRow, numRows) { var range = sheet.getRange(startRow, 1, numRows, 1); var values = range.getValues(); return values; } function clearTargetRange(sheet, startRow, numRows) { var range = sheet.getRange(startRow, 1, numRows, 1); range.clear(); } function splitToSingleSentece(rangeValues) { var pattern = /.*\. |.*\.|.*\! |.*\!|.*\? |.*\?|.*\,\n|.*$/g; var singleSentences = []; for(var i = 0; i < rangeValues.length; i++) { var sentences = rangeValues[i][0].match(pattern); for(var j = 0; j < sentences.length; j++) { singleSentences.push(sentences[j]); } } return singleSentences } |