今回やりたかったこと
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
}
|

