推送到此解决方法
Push to This Workaround
我正在尝试重构我编写的 Google AdWords 脚本的一部分,以便不必重复我希望可以通过 [的实例动态更新的 if 语句=21=]。但是,我收到 "Cannot find function push in object firstKeywords. (line 34)" 错误。当我简单地插入 "firstKeywords.push" 而不是 "this.keywordsArray.push" 时,脚本就起作用了。想知道是否有办法将 "this" 实例视为数组,或者是否有其他解决方法?
Error: this.keywordsArray.push
非工作脚本:
var firstKeywords = [];
var secondKeywords = [];
var thirdKeywords = [];
function main() {
function testKeywords(adgr, keywordsArray) {
this.adgr = adgr;
this.keywordsArray = keywordsArray;
}
testKeywords.prototype.move = function () {
var campaignIterator = AdWordsApp.campaigns()
.withCondition("Status = ENABLED")
.withCondition("Name CONTAINS_IGNORE_CASE 'High'")
.get();
while (campaignIterator.hasNext()) {
var campaign = campaignIterator.next();
var adGroupIterator = campaign.adGroups()
.withCondition("Name CONTAINS_IGNORE_CASE 'Blogs'")
.get();
while (adGroupIterator.hasNext()) {
var adGroup = adGroupIterator.next();
var adGroupName = adGroup.getName();
var keywordIterator = adGroup.keywords()
.withCondition("SystemServingStatus = RARELY_SERVED")
.get();
while (keywordIterator.hasNext()) {
var keyword = keywordIterator.next();
var keywordText = keyword.getText();
var adgroupArray = this.keywordsArray;
if (adGroupName === this.adgr) {
this.keywordsArray.push(keywordText);
keyword.pause();
}
}
}
}
}
var test01 = new testKeywords("General Music Blogs", "firstKeywords");
var test02 = new testKeywords("Hip Hop Music Blogs", "secondKeywords");
var test03 = new testKeywords("Indie Music Blogs", "thirdKeywords");
test01.move();
test02.move();
test03.move();
}
下面的脚本以正确的方式工作,但重复了 if 语句。
var firstKeywords = [];
var secondKeywords = [];
var thirdKeywords = [];
function main() {
function testKeywords() {
var campaignIterator = AdWordsApp.campaigns()
.withCondition("Status = ENABLED")
.withCondition("Name CONTAINS_IGNORE_CASE 'High'")
.get();
while (campaignIterator.hasNext()) {
var campaign = campaignIterator.next();
var adGroupIterator = campaign.adGroups()
.withCondition("Name CONTAINS_IGNORE_CASE 'Blogs'")
.get();
while (adGroupIterator.hasNext()) {
var adGroup = adGroupIterator.next();
var adGroupName = adGroup.getName();
var keywordIterator = adGroup.keywords()
.withCondition("SystemServingStatus = RARELY_SERVED")
.get();
while (keywordIterator.hasNext()) {
var keyword = keywordIterator.next();
var keywordText = keyword.getText()
if (adGroupName === 'General Music Blogs') {
firstKeywords.push(keywordText);
keyword.pause();
}
if (adGroupName === 'Hip Hop Music Blogs') {
secondKeywords.push(keywordText);
keyword.pause();
}
if (adGroupName === 'Indie Music Blogs') {
thirdKeywords.push(keywordText);
keyword.pause();
}
}
}
}
}
}
提前致谢。
在您的 testKeyword 中,您传递的是 string
文字而不是 object
引用。
所以改变
var test01 = new testKeywords("General Music Blogs", "firstKeywords");
var test02 = new testKeywords("Hip Hop Music Blogs", "secondKeywords");
var test03 = new testKeywords("Indie Music Blogs", "thirdKeywords");
到
var test01 = new testKeywords("General Music Blogs", firstKeywords);
var test02 = new testKeywords("Hip Hop Music Blogs", secondKeywords);
var test03 = new testKeywords("Indie Music Blogs", thirdKeywords);
我正在尝试重构我编写的 Google AdWords 脚本的一部分,以便不必重复我希望可以通过 [的实例动态更新的 if 语句=21=]。但是,我收到 "Cannot find function push in object firstKeywords. (line 34)" 错误。当我简单地插入 "firstKeywords.push" 而不是 "this.keywordsArray.push" 时,脚本就起作用了。想知道是否有办法将 "this" 实例视为数组,或者是否有其他解决方法?
Error: this.keywordsArray.push
非工作脚本:
var firstKeywords = [];
var secondKeywords = [];
var thirdKeywords = [];
function main() {
function testKeywords(adgr, keywordsArray) {
this.adgr = adgr;
this.keywordsArray = keywordsArray;
}
testKeywords.prototype.move = function () {
var campaignIterator = AdWordsApp.campaigns()
.withCondition("Status = ENABLED")
.withCondition("Name CONTAINS_IGNORE_CASE 'High'")
.get();
while (campaignIterator.hasNext()) {
var campaign = campaignIterator.next();
var adGroupIterator = campaign.adGroups()
.withCondition("Name CONTAINS_IGNORE_CASE 'Blogs'")
.get();
while (adGroupIterator.hasNext()) {
var adGroup = adGroupIterator.next();
var adGroupName = adGroup.getName();
var keywordIterator = adGroup.keywords()
.withCondition("SystemServingStatus = RARELY_SERVED")
.get();
while (keywordIterator.hasNext()) {
var keyword = keywordIterator.next();
var keywordText = keyword.getText();
var adgroupArray = this.keywordsArray;
if (adGroupName === this.adgr) {
this.keywordsArray.push(keywordText);
keyword.pause();
}
}
}
}
}
var test01 = new testKeywords("General Music Blogs", "firstKeywords");
var test02 = new testKeywords("Hip Hop Music Blogs", "secondKeywords");
var test03 = new testKeywords("Indie Music Blogs", "thirdKeywords");
test01.move();
test02.move();
test03.move();
}
下面的脚本以正确的方式工作,但重复了 if 语句。
var firstKeywords = [];
var secondKeywords = [];
var thirdKeywords = [];
function main() {
function testKeywords() {
var campaignIterator = AdWordsApp.campaigns()
.withCondition("Status = ENABLED")
.withCondition("Name CONTAINS_IGNORE_CASE 'High'")
.get();
while (campaignIterator.hasNext()) {
var campaign = campaignIterator.next();
var adGroupIterator = campaign.adGroups()
.withCondition("Name CONTAINS_IGNORE_CASE 'Blogs'")
.get();
while (adGroupIterator.hasNext()) {
var adGroup = adGroupIterator.next();
var adGroupName = adGroup.getName();
var keywordIterator = adGroup.keywords()
.withCondition("SystemServingStatus = RARELY_SERVED")
.get();
while (keywordIterator.hasNext()) {
var keyword = keywordIterator.next();
var keywordText = keyword.getText()
if (adGroupName === 'General Music Blogs') {
firstKeywords.push(keywordText);
keyword.pause();
}
if (adGroupName === 'Hip Hop Music Blogs') {
secondKeywords.push(keywordText);
keyword.pause();
}
if (adGroupName === 'Indie Music Blogs') {
thirdKeywords.push(keywordText);
keyword.pause();
}
}
}
}
}
}
提前致谢。
在您的 testKeyword 中,您传递的是 string
文字而不是 object
引用。
所以改变
var test01 = new testKeywords("General Music Blogs", "firstKeywords");
var test02 = new testKeywords("Hip Hop Music Blogs", "secondKeywords");
var test03 = new testKeywords("Indie Music Blogs", "thirdKeywords");
到
var test01 = new testKeywords("General Music Blogs", firstKeywords);
var test02 = new testKeywords("Hip Hop Music Blogs", secondKeywords);
var test03 = new testKeywords("Indie Music Blogs", thirdKeywords);