gpt4 book ai didi

javascript - 尝试在 AdWords 脚本中进行本质上的 vlookup,但花费的时间太长

转载 作者:行者123 更新时间:2023-11-30 20:16:26 27 4
gpt4 key购买 nike

我正在尝试将位置输入(可能是邮政编码或街区)与 AdWords 位置 ID 相匹配。我有一个包含将近 100,000 行的大量 google 表格,其中列出了所有邮政编码、城市、社区等及其相应的 ID,我正在尝试编写一个函数,您可以在其中输入邮政编码(例如)和它为您提供了位置 ID。到目前为止,我有:

  var locationSpread = SpreadsheetApp.openById('scriptID');
var locationSheet = locationSpread.getSheetByName('Sheet1');
var locationRow = locationSheet.getLastRow();

var locationMatch = function(locationInput) {

for (var i = 2; i <= locationRow; i++) {
var locationName = locationSheet.getRange([i], 2).getValue();
if (locationName == locationInput) {
return locationSheet.getRange([i], 1);
}
}
}

Logger.log(locationMatch('DD7'));

我认为理论上这应该可行,但 AdWords 脚本的限制是 30 分钟,并且由于这必须遍历这么多行,所以根本不可行,需要 20 多分钟才能返回示例日志记录,脚本应该为一堆输入动态地执行此操作。

是否有更快/更好的方法来做到这一点?还是脚本本身存在问题导致它运行如此缓慢?

最佳答案

使用 .getValues() 可能会更快。你需要尝试一下。

var locationSpread = SpreadsheetApp.openById('asdf');
var locationSheet = locationSpread.getSheetByName('asdf');
var locationRow = locationSheet.getLastRow();

Logger.log("Starting!")
Logger.log("LocationRow: "+locationRow);

function locationMatch(locationInput) {
var locationNames = locationSheet.getRange(1, 2,locationRow,2).getValues();
for (var i = 1; i <= locationRow-1; i++) {
Logger.log("locationNames[i][0]:"+locationNames[i][0])
if (locationNames[i][0] == locationInput) {
return locationSheet.getRange([i], 1);
}
}
}

Logger.log("locationMatch Result:"+locationMatch('MA'));

关于javascript - 尝试在 AdWords 脚本中进行本质上的 vlookup,但花费的时间太长,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51876947/

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