Наличие нескольких переменных данных - PullRequest
1 голос
/ 28 мая 2019

Hy там,

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
  };  
}

этот сценарий вызывает сайт Instagram "data1" и печатает UserCount в электронную таблицу.но я хочу использовать другие instagramAccountName

Я хочу настроить еще 3 данных.

var instagramAccountName = "data1"&&"data2"; не работает, так что вы предлагаете?

THX

1 Ответ

2 голосов
/ 28 мая 2019

Во-первых, просто ссылайтесь на свои глобальные переменные по их именам, нет необходимости в this.

Во-вторых, "data1"&&"data2" соответствует «data1 AND data2» (скрипт приложения на языке JS), который всегда записывает true в вашу переменную instagramAccountName.

В-третьих, существует множество способов ссылаться на несколько имен учетных записей, но вы можете записать в свою переменную instagramAccountName Array имен = ['n1','n2'] и затем вызвать getInstagramData(username) в for или forEach loop.

В конце ваша функция должна выглядеть следующим образом (кстати, учетные данные также определены как глобальные? Я не могу найти, где вы их определяете):

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]); 
  });     
};
...