使用谷歌应用程序脚本和电子表格,我一直在尝试做一个简单的事情,但无法弄清楚问题.我有一张工作表,一个空白列和一个带文字的列.列不是彼此相邻的.我试图在一列中的每个单元格中搜索文本,如果找到文本,则将空列中单元格的值设置为"是".
示例(对不起没有代码 - 我已经用了几个小时了,而且我所拥有的是如此令人费解,最好只提供一个例子):
Column A with text Empty Column F
abcd efg hij
klmn opq rstu
vwxzy Yes
Run Code Online (Sandbox Code Playgroud)
在A列中搜索"xyz"并在F列中返回"是"的最简单代码是什么?
我在网上查看并尝试了十几个不同的代码示例,并且无法使它们中的任何一个工作.感谢任何帮助!!
编辑(最后希望)供我使用(我有一些后端实用程序,根据标题名称获取列号,该代码不包含在此,fyi):
var sskey = SpreadsheetApp.openById('**********************')
function otherfunction(){
addCustomValue('POCs', 'Groups', 'Champion', 'Champion', 'Yes');
}
function addCustomValue(sheetNamestr, searchColnamestr, writeColnamestr, searchKeystr, writeValstr) {
var sheet = sskey.getSheetByName(sheetNamestr);
var searchColnum = MyUtilities.getColIndexByName(sheet, 1, searchColnamestr);
var writeColnum = MyUtilities.getColIndexByName(sheet, 1, writeColnamestr);
var data = sheet.getDataRange().getValues();
for (n=0; n<data.length; ++n) {
if (data[n][searchColnum-1].toString().match(searchKeystr)==searchKeystr){ data[n][writeColnum-1] = writeValstr};
}
sheet.getRange(1,1,data.length,data[0].length).setValues(data);
}
Run Code Online (Sandbox Code Playgroud)
谢谢Serge!现在我可以根据任何列和条件在我的电子表格上运行它!
我知道之前已经问过这个问题,因为我花了最近5个小时从这里尝试所有这些,甚至是关闭的谷歌产品论坛.我无法阻止任何循环.条件得到满足,但循环继续运行和运行.我已经从其他在线的例子复制和插入我自己的变量,但最终,我将有5行到新的工作表数次直到板累了或什么的.
我试过getDataRange ......我已经试过getRange ......我试过在环路和其他循环变种,我已经试过所有,所以请大家看看,让我知道这个代码是如何保持导致行多次添加到新工作表:
function runReportAllMemCos1() {
var sheet1 = sskey.getSheetByName('Businesses');
var sheet2 = sskey.getSheetByName('tempsheet');
var data = sheet1.getRange(1,1, sheet1.getLastRow(), sheet1.getLastColumn()).getValues();
var dest = [];
for (var i = 0; i < data.length; i++ ) {
if (data[i][12] == "Associate") {
dest.push(data[i]);
} Logger.log(data)
if (dest.length > 0 ) {
sheet2.getRange(sheet2.getLastRow()+1,1,dest.length,dest[0].length).setValues(dest);
}
}
}
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助!