拥有多个var数据
Having multiple var data
下面的脚本正在调用 "data1" 的 instagram 站点并将 UserCount
打印到电子表格中。但我想使用不同的 instagramAccountName
我想再设置 3 个数据。
var instagramAccountName = "data1"&&"data2";
不工作,那么您有什么建议?
var sheetName = "Tabellenblatt1";
var instagramAccountName = "data1";
function insertFollowerCount() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName(this.sheetName);
accountdata = getInstagramData(this.instagramAccountName);
sheet.appendRow([instagramAccountName, Utilities.formatDate(new Date(), "GMT", "yyyy-MM-dd"), accountdata.followerCount]);
};
function getInstagramData(username) {
var r = new RegExp('<script type="text\/javascript">' +
'([^{]+?({.*profile_pic_url.*})[^}]+?)' +
'<\/script>');
var url = "https://www.instagram.com/" + username
var source = UrlFetchApp.fetch(url).getContentText();
var jsonStr = source.match(r)[2];
var data = JSON.parse(jsonStr);
console.log('data', data);
var oldVariantOfData = data['entry_data']['ProfilePage'][0];
console.log('oldVariantOfData', oldVariantOfData);
return {
followerCount : oldVariantOfData.graphql.user.edge_followed_by.count,
followCount : oldVariantOfData.graphql.user.edge_follow.count,
mediaCount : oldVariantOfData.graphql.user.edge_owner_to_timeline_media.count
};
}
- 首先,只需通过名称引用您的全局变量,不需要
this
。
- 其次,
"data1" && "data2"
等于 "data1 AND data2"(Google Apps 脚本是 JavaScript 的子集),它始终将 true
存储在您的 instagramAccountName
变量。
- 第三,有很多方法可以引用多个帐户名称,但是您可以将名称
= ['n1','n2']
的 Array
写入您的 instagramAccountName
变量,然后调用 getInstagramData(username)
使用 for
、for...of
循环或 forEach
方法。
最后,你的函数应该是这样的(顺便说一下,accountdata
应该定义在外部作用域中,否则你会得到一个 ReferenceError
):
var instagramAccountName = ['data1','data2'];
function insertFollowerCount() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName(sheetName);
instagramAccountName.forEach(function(username){
accountdata = getInstagramData(username);
sheet.appendRow([username, Utilities.formatDate(new Date(),
"GMT", "yyyy-MM-dd"), accountdata.followerCount]);
});
};
参考文献
MDN 上的 forEach
方法 reference
下面的脚本正在调用 "data1" 的 instagram 站点并将 UserCount
打印到电子表格中。但我想使用不同的 instagramAccountName
我想再设置 3 个数据。
var instagramAccountName = "data1"&&"data2";
不工作,那么您有什么建议?
var sheetName = "Tabellenblatt1";
var instagramAccountName = "data1";
function insertFollowerCount() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName(this.sheetName);
accountdata = getInstagramData(this.instagramAccountName);
sheet.appendRow([instagramAccountName, Utilities.formatDate(new Date(), "GMT", "yyyy-MM-dd"), accountdata.followerCount]);
};
function getInstagramData(username) {
var r = new RegExp('<script type="text\/javascript">' +
'([^{]+?({.*profile_pic_url.*})[^}]+?)' +
'<\/script>');
var url = "https://www.instagram.com/" + username
var source = UrlFetchApp.fetch(url).getContentText();
var jsonStr = source.match(r)[2];
var data = JSON.parse(jsonStr);
console.log('data', data);
var oldVariantOfData = data['entry_data']['ProfilePage'][0];
console.log('oldVariantOfData', oldVariantOfData);
return {
followerCount : oldVariantOfData.graphql.user.edge_followed_by.count,
followCount : oldVariantOfData.graphql.user.edge_follow.count,
mediaCount : oldVariantOfData.graphql.user.edge_owner_to_timeline_media.count
};
}
- 首先,只需通过名称引用您的全局变量,不需要
this
。 - 其次,
"data1" && "data2"
等于 "data1 AND data2"(Google Apps 脚本是 JavaScript 的子集),它始终将true
存储在您的instagramAccountName
变量。 - 第三,有很多方法可以引用多个帐户名称,但是您可以将名称
= ['n1','n2']
的Array
写入您的instagramAccountName
变量,然后调用getInstagramData(username)
使用for
、for...of
循环或forEach
方法。
最后,你的函数应该是这样的(顺便说一下,accountdata
应该定义在外部作用域中,否则你会得到一个 ReferenceError
):
var instagramAccountName = ['data1','data2'];
function insertFollowerCount() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName(sheetName);
instagramAccountName.forEach(function(username){
accountdata = getInstagramData(username);
sheet.appendRow([username, Utilities.formatDate(new Date(),
"GMT", "yyyy-MM-dd"), accountdata.followerCount]);
});
};
参考文献
-
MDN 上的
forEach
方法 reference