全面披露-不是程序员...我只是对Excel和Google Sheets感到困惑,并且一直试图寻找一种简单的方法来转换一组特定的数据。从本质上讲,我们有一个网站托管服务商,使我们能够导出各种可填写表格的结果。其中之一是电子学习视频的注册。表单的结果为我们维护的大约20个视频中的每个视频提供了一个特定的网址...但是该网址或表单本身中的任何内容都不会自动指示人类可读的标签(例如“应用程序使用简介”),如果有人愿意使用导出跟踪客户观看了哪些特定视频。因此,对于每次导出数据,我都需要找到一种方法来运行宏或脚本,该宏或脚本将遍历数据的一列,并针对包含每个视频特定网址的键进行检查,然后吐出每个视频的用户可读名称进入第二列。
因此,我需要一个脚本来说明,如果A1:A100 = a,b,c,d,e,f,g(“ a,b,c,d,e,f,g”是来自列表或网址),然后设置B1:B100 = a *,b *,c *,d *,e *,f *,g *(“ a *,b *,c *,d *,e *,f *,g *“是由网址表示的每个视频的用户可读名称。
对此有何想法?我想我有办法在B列中所有单元格的公式中完成此操作,但是我在单个公式中引用了很多冗长的url,以至于不使用脚本来处理它似乎很荒谬。在脚本编写方面,我只是呆呆的……
答案 0 :(得分:0)
发问者本质上是在寻找一种手段,以将有意义的电影标题与网络服务提供的无意义(但一致)的URL进行匹配。发问者说,尽管我们没有交易量的指示,但他们有100项书名。在这种情况下,并且不知道更多信息,最有效的选择是线性搜索。
我创建了一个包含两张工作表的电子表格:
1-标题:包含供应商URL和关联的有意义的“标题名称”的列表。这是一张由提问者在添加或删除标题时维护的工作表。
2-传输数据:包含一些相同的数据;包括供应商URL,以及为有意义的标题名称预留的列。
该脚本涉及一个嵌套循环。第一级遍历交易数据的每一行。第二个嵌套循环,计算每个事务行的url,并返回标题,该标题保存在“电影名称”列中的工作表中。
为了使处理该函数更容易,我添加了一个OnOpen函数,以便Questioner可以访问主菜单以确定它们何时进行处理。
function so_52892546() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var Titles = ss.getSheetByName("Titles");
var Titlesrange = Titles.getDataRange();
var Titlesvalues = Titlesrange.getValues();
var TitleslastRow = Titles.getLastRow();
var Trans = ss.getSheetByName("TransData");
var Transrange = Trans.getDataRange();
var Transvalues = Transrange.getValues();
var TranslastRow = Trans.getLastRow();
for (var i = 1; i < TranslastRow; i++) {
for (var z = 1; z < TitleslastRow; z++) {
if (Transvalues[i][0] == Titlesvalues[z][0]) {
var Title = Titlesvalues[z][1];
//Logger.log("match i = "+1);
}
}
//Logger.log("i="+i+". Title: "+MovieTitle+", date = "+Transdata[i][1]+", income"+Moviesdata[i][2]);
var targetrange = Trans.getRange(i + 1, 4);
targetrange.setValue(Title);
}
}
function onOpen() {
var spreadsheet = SpreadsheetApp.getActive();
var menuItems = [{
name: 'Update Movie names',
functionName: 'so_52892546'
}, ];
spreadsheet.addMenu('Update Movies', menuItems);