Google apps script 需要将列表中的一个值转换为另一个值

Google apps script 需要将列表中的一个值转换为另一个值,google-apps-script,Google Apps Script,完全公开-不是程序员…我只是把Excel和Google工作表弄得一团糟,我一直在试图找到一种转换特定数据集的简单方法。本质上,我们有一个网站主机,它为我们提供了运行各种可填充表单结果导出的能力。其中之一是注册电子学习视频。表单的结果为我们维护的大约20个视频中的每一个都提供了一个特定的url…但无论是url还是表单本身中的任何内容,都不会自动指示一个可读标签(如“应用程序使用简介”),如果有人想使用导出跟踪客户观看了什么特定视频,该标签是有用的。所以,对于每次数据导出,我需要找到一种方法来运行一

完全公开-不是程序员…我只是把Excel和Google工作表弄得一团糟,我一直在试图找到一种转换特定数据集的简单方法。本质上,我们有一个网站主机,它为我们提供了运行各种可填充表单结果导出的能力。其中之一是注册电子学习视频。表单的结果为我们维护的大约20个视频中的每一个都提供了一个特定的url…但无论是url还是表单本身中的任何内容,都不会自动指示一个可读标签(如“应用程序使用简介”),如果有人想使用导出跟踪客户观看了什么特定视频,该标签是有用的。所以,对于每次数据导出,我需要找到一种方法来运行一个宏或脚本,该宏或脚本将运行一列数据,对照包含每个视频特定url的键进行检查,然后将每个视频的用户可读名称吐出到第二列中

所以,我需要一个脚本,如果A1:A100=a,b,c,d,e,f,g(“a,b,c,d,e,f,g”是列表或URL中的任何条目),那么设置B1:B100=a*,b*,c*,d*,e*,f*,g*(“a*,b*,c*,d*,e*,f*,g*”是URL表示的每个视频的用户可读名称)


有什么想法吗?我想我有办法在B列的所有单元格中的公式中实现这一点,但我会在单个公式中引用太多冗长的URL,以至于不使用脚本来处理它似乎很荒谬。当涉及到脚本时,我只是个呆子…

提问者本质上是在寻找一种方法,将有意义的电影标题与web服务提供的无意义(但一致)url相匹配。发问者说,他们有100个标题,尽管我们没有交易量的迹象。在这种情况下,在不知道更多数量的情况下,最有效的选择是线性搜索

我创建了一个包含两张表的电子表格:
1-标题:包含供应商URL和相关有意义的“标题名称”列表。这是一张在添加或删除标题时由提问者维护的表格。
2-Transdata:包含一些相同的数据;包括供应商URL和为有意义的标题名留出的列

该脚本包含一个嵌套循环。第一级遍历每一行事务数据。第二个嵌套循环计算每个事务行的url并返回标题,该标题保存到“MovieName”列中的工作表中

为了使处理该函数更容易,我添加了一个OnOpen函数,以便提问者可以访问主菜单来确定他们何时处理该函数


函数so_52892546(){
var ss=SpreadsheetApp.getActiveSpreadsheet();
var Titles=ss.getSheetByName(“标题”);
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();
对于(变量i=1;i

标题表截图


Transdata表的“之前”和“之后”屏幕截图。


您好。我可以看出您没有任何意见或建议的答案。您是否解决了您的问题或仍在寻求帮助?没有,目前还没有解决任何问题。如果需要,我有一种草率、繁琐的方法来完成这项工作,但我希望能从这里的某个人那里得到一些简化。
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);