Google apps script 如何在GoogleSheets中的列中插入每N行有值的单元格
列中有一个连续列表数组形式的不同值列表。 我们需要通过在它们之间插入一些文本,将它们分组并在另一列中每隔第n行第7行分开。不是一整排。只是一间牢房。因此,它们将被推下立柱 到目前为止,我已经尝试并成功地通过使用一个简单的查询获得了所需的结果: 不过我想知道。是否有一种更优雅、更通用的方法使用公式或脚本。我建议您使用以下基于应用程序脚本的解决方案: 工作流程: 将感兴趣的列的内容推送到数组中 每递增一次,插入一个包含内容的附加条目 将数组转换为[column][row]语法 将值插入到目标列中 参考资料: 您可以使用每N行插入一个数组: /** *每N行插入一个字符串 * *@customfunction *@param{Object[][]}arr输入列 *@param{number}每插入第n行 *@param{string}str要插入的字符串 */ 函数insertTextarr,every,str{ 对于 var i=0,j=0; iGoogle apps script 如何在GoogleSheets中的列中插入每N行有值的单元格,google-apps-script,google-sheets,google-sheets-formula,array-formulas,google-sheets-query,Google Apps Script,Google Sheets,Google Sheets Formula,Array Formulas,Google Sheets Query,列中有一个连续列表数组形式的不同值列表。 我们需要通过在它们之间插入一些文本,将它们分组并在另一列中每隔第n行第7行分开。不是一整排。只是一间牢房。因此,它们将被推下立柱 到目前为止,我已经尝试并成功地通过使用一个简单的查询获得了所需的结果: 不过我想知道。是否有一种更优雅、更通用的方法使用公式或脚本。我建议您使用以下基于应用程序脚本的解决方案: 工作流程: 将感兴趣的列的内容推送到数组中 每递增一次,插入一个包含内容的附加条目 将数组转换为[column][row]语法 将值插入到目标列中
+------+-----------+-----------+
| | Col2 | Col3 |
+------+-----------+-----------+
| 1 | Sunday | Group 01 |
| 2 | Monday | Sunday |
| 3 | Tuesday | Monday |
| 4 | Wednesday | Tuesday |
| 5 | Thursday | Wednesday |
| 6 | Friday | Thursday |
| 7 | Saturday | Friday |
| 8 | 10 | Saturday |
| 9 | 20 | Group 02 |
| 10 | 30 | 10 |
| 11 | 40 | 20 |
| 12 | 50 | 30 |
| 13 | 60 | 40 |
| 14 | 70 | 50 |
| 15 | MERCURY | 60 |
| 16 | MARS | 70 |
| 17 | JUPITER | Group 03 |
| 18 | VENUS | MERCURY |
| 19 | SATURN | MARS |
| 20 | EARTH | JUPITER |
| 21 | NEPTUNE | VENUS |
| 22 | Mary | SATURN |
| 23 | John | EARTH |
| 24 | Paul | NEPTUNE |
| 25 | Ann | Group 04 |
| 26 | ... | Mary |
| 27 | ... | John |
| 28 | | Paul |
| 29 | | Ann |
| 30 | | |
| 31 | | |
| 32 | | |
| 33 | | |
+------+-----------+-----------+
=QUERY(({"***Group";B1:B7;"***Group";B8:B14;"***Group";B15:B21;"***Group";B22:B25;}),"SELECT *")
function myFunction() {
var sheet=SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1');
var firstRow=1;
var column=2;
var destColumn=3;
var increment=7;
var lastRow=sheet.getLastRow();
var values=sheet.getRange(firstRow, column, lastRow,1).getValues();
var array=[];
var k=1;
Logger.log(lastRow);
for(var i=0;i<lastRow;i++){
if(i%increment==0){
array.push("Group "+k);
k++;
}
array.push(values[i][0]);
}
var outerArray = [];
for(var j=0;j<array.length;j++){
var tempArray = [];
tempArray.push(array[j]);
Logger.log(array[j]);
Logger.log(tempArray);
outerArray.push(tempArray);
}
sheet.getRange(1, destColumn, array.length, 1).setValues(outerArray);
}