google-apps-script - 如果标题包含 x,则 Apps 脚本插入 2 列
问题描述
如果“ y ”文本与标题列中的值匹配,我已经整理了一些代码来插入 x列。代码有效,但是,有什么方法可以让代码只匹配最后两个单词?所以我需要搜索标题值是否包含单词“Teacher Target”,如果它匹配在该列之前插入两列,但是我有其他包含标题“Teacher Target - EFG”的列我不需要在这些之前插入列.
我正在使用的代码是:
function insCols(e) {
var lastColumn = ss.getLastColumn();
var headers = ss.getRange('1:1').getValues();
var searchVal = ui.prompt("Enter name of column to be inserted").getResponseText();
var noCols = ui.prompt("Number of columns to be inserted").getResponseText();
var names = headers[0];
var loopCounter = names.length - 1
for (var i = loopCounter; i >= 1; i--) {
if(names[i].indexOf(searchVal) > -1) {
ss.insertColumnsBefore(i + 1, noCols);
}
}
}
希望这是有道理的。
谢谢
法兹拉
解决方案
您可以尝试使用 Headerstring.slice(-14)==“Teacher Target”</p>
此函数使用 onEdit 可安装触发器运行。
function insCols(e) {
e.source.toast('flag1');
var sh=e.range.getSheet();
if(sh.getName()!='Sheet222') return;
var hA=sh.getRange(1,1,1,sh.getLastColumn()).getValues()[0];
var nc=0;
hA.forEach(function(e,i){
if(e.slice(-14)=="Teacher Target") {
var msg=Utilities.formatString('Enter names of columns to be inserted next to left of column %s separated by commas.',i+1+nc);
var resp=SpreadsheetApp.getUi().prompt(msg,SpreadsheetApp.getUi().ButtonSet.OK_CANCEL);
if(resp.getSelectedButton()==SpreadsheetApp.getUi().Button.OK) {
var nA=resp.getResponseText().split(',');
var cn=i+1+nc;
nA.forEach(function(n,j){
sh.insertColumnBefore(cn+j);
sh.getRange(1,cn+j).setValue(nA[j]);
SpreadsheetApp.flush();
nc++;
});
}
if(resp.getSelectedButton()==SpreadsheetApp.getUi().Button.CANCEL) {
}
}
});
}
推荐阅读
- intervention - 替换干预图像中的颜色
- reactjs - 将反应构建输出组合到单个 js 文件中
- python - matplotlib 中的对数比例问题
- pymysql - pymysql 是否完全支持 MySQL 身份验证?
- eclipse - 是否可以让日食在并排视图中显示降价?像 vscode 一样吗?
- node.js - 使用 CodeBuild 的自动构建无法在 AWS 上运行
- c++ - 如何从子类的构造函数初始化父类的私有成员
- docker - 看来我的 gCloud VM 实例删除了我正在运行的 docker 映像/容器
- r - 如何过滤数据框中每小时的最大值?
- google-apps-script - 从另一个工作表谷歌表格中查询一列中的数据列表