我有一个问答电子表格,所有内容都在A列中,其中包括Markdown格式的标题。是否有一个脚本可以识别每个带有星号的单元格,然后在其上方插入一行?
我尝试创建一个范围,然后使用insertRowsBefore
,但出现错误(我想是因为insertRowsBefore
需要一个整数)。
答案 0 :(得分:-1)
您需要什么。仅当该行中的单元格“ A”包含星号且之前的行不为空时,此代码才在该行之前插入一行。
function userActionInsertRowsBefore() {
/** @type {conditionCallback} */
var cb = function(row, i, values) {
return values[i - 1] && /\*/.test(row[0]) && values[i - 1].join('') !== '';
};
var sheet = SpreadsheetApp.getActiveSheet();
insertRowBeforeByCondition_(sheet, cb);
}
/**
* Insert row before by a condition
* @param {GoogleAppsScript.Spreadsheet.Sheet} sheet
* @param {conditionCallback} Decides insert or skip the row
* @returns {GoogleApps Script.Spreadsheet.Sheet}
*/
function insertRowBeforeByCondition_(sheet, condition) {
// var sheet = SpreadsheetApp.getActiveSheet();
var dataRange = sheet.getDataRange();
var values = dataRange.getValues();
for (var i = values.length - 1; i >= 0; i--) {
if (condition(values[i], i, values)) sheet.insertRowBefore(i + 1);
}
return sheet;
}
/**
* This callback is displayed as a global member.
* @callback conditionCallback
* @param {object[]} row Row data
* @param {number} index Index of the row
* @param {object[][]} values Sheet values
* @returns {boolean}
*/