gpt4 book ai didi

typescript - 基于部分文本删除行的 Office 脚本

转载 作者:行者123 更新时间:2023-12-05 04:32:55 41 4
gpt4 key购买 nike

我正在制作一个 Office 脚本,它应该根据第一列单元格中的部分文本删除一行。触发词应该是“Applied”,但它通常是第一个词之后的更多文本,即“Applied formula”或“Applied number”。

脚本:

function main(workbook: ExcelScript.Workbook) {

//getting the used range in the worksheet
let usedRange = workbook.getActiveWorksheet().getUsedRange();

//getting the row count of the used range
let lastRow = usedRange.getRowCount();

usedRange = workbook.getActiveWorksheet().getRangeByIndexes(0, 0, (usedRange.getRowIndex() + lastRow), 19)

//getting the values of the range
let values = usedRange.getValues();

//getting the row count of the range
let rowCount = usedRange.getRowCount();

//for every row starting at the last row, checking if the cell in column 'A' contains part of text "Applied". If it is, then delete the entire row.
for (let i = rowCount - 1; i >= 0; i--) {
if (values[i][0] == "Applied*") {
usedRange.getCell(i, 0).getEntireRow().delete(ExcelScript.DeleteShiftDirection.up)
}
}

}

我无法让它工作,在脚本的最后部分 Applied 之后是否应该有其他东西而不是“*”?

提前致谢

最佳答案

我认为您需要将您的值转换为字符串,然后使用 search 函数。

例如,我在单元格 A1:A5 中有这些值 ...

this string doesn't have it
this is test a string
this one has Test
another one without
nup, not this one

你需要对此进行调整,但我创建了一个看起来像这样的脚本......

function main(workbook: ExcelScript.Workbook)
{
let activeSheet = workbook.getActiveWorksheet();
let range = activeSheet.getRange("A1:A5");
let rangeValues = range.getValues();

rangeValues.forEach(cellValue => {
console.log(cellValue[0].toString().toLowerCase().search('test'));
});
}

...控制台的输出是...

Result

为了避免大小写,我在搜索前将字符串设置为小写,但是否要尊重大小写取决于您。

您也可以使用这种方法...

cellValue[0].toString().search(/test/i)

...忽略大小写。

最重要的是,使用 toString(),然后使用 search() 函数,它将返回子字符串在主字符串中的位置。

任何大于-1的都表示该字符串存在。

如果您想测试字符串是否以 Applied 开头,那么您需要检查所有出现的搜索结果等于 0

关于typescript - 基于部分文本删除行的 Office 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71569456/

41 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com