Скрипты Google Apps неожиданно перестали работать - PullRequest
0 голосов
/ 14 февраля 2020

Я работаю в пределах клана, для которого мы отслеживаем пользователей через лист. Функции, которые мы использовали для получения имен из Steam и Bung ie, недавно перестали работать, и сделали это без какой-либо известной причины. В настоящее время все наши UrlFetches возвращают ноль, а не имена, как это было

Это наша функция для Steam

/**
 * Gets the Steam profile name for the ID.
 *
 * @param {number} id The user's Steam id (steamID64).
 * @return The profile name.
 * @customfunction
 */
function STEAMNAME(id) {
  // Allow empty entries in ranges.
  if (id == null || !id || id == "") {
    return "";
  }

  // Allow range inputs.
  if (id.map) {
    return id.map(STEAMNAME);
  }

  // Get cached value.
  const cache = CacheService.getScriptCache();
  const cacheKey = id + ".steam";

  const cached = cache.get(cacheKey);
  if (cached != null) {
    return cached;
  }

  try {

  const url = "https://steamcommunity.com/profiles/{id}?xml=1".replace("{id}", id);

  var response = null;
  try {
    response = UrlFetchApp.fetch(url);
  } catch (e) {
  }

  if (response == null) {
    throw new Error("Invalid ID");
  }

  const content = XmlService.parse(response.getContentText());

  const root = content.getRootElement();
  const profile = root.getChild("steamID");

  /*if (profile == null) {
    throw new Error("Invalid ID");
  }*/

  const name = profile.getText();

  // Cache timeout 30 minutes.
  const CACHE_TIMEOUT = 60 * 30;

  cache.put(cacheKey, name, CACHE_TIMEOUT);

  return name;

  } catch (e) {
    throw e;
  }
}

и наша функция для Bung ie API

/**
 * Gets the bungie.net display name for the steam ID.
 *
 * @param {number} steamId The user's Steam id (steamID64).
 * @return The bungie.net display name.
 * @customfunction
 */
function BUNGIENETNAME(steamId) {
  // Allow empty entries in ranges.
  if (steamId == null || !steamId || steamId == "") {
    return "";
  }

  // Allow range inputs.
  if (steamId.map) {
    return steamId.map(BUNGIENETNAME);
  }

  // Get cached value.
  const cache = CacheService.getScriptCache();
  const cacheKey = steamId + ".bungie";

  const cached = cache.get(cacheKey);
  if (cached != null) {
    return cached;
  }

  const API_KEY = "<censored>";
  const API_BASE = "https://www.bungie.net/Platform";

  const options = {
    "headers": {
      "Accept": "application/json",
      "X-API-Key": API_KEY
    }
  };

  try {

    var url = API_BASE + "/User/GetMembershipFromHardLinkedCredential/12/{id}".replace("{id}", steamId);

    var response = null;
    try {
      response = UrlFetchApp.fetch(url, options);
    } catch (e) {
    }
    if (response == null) {
      throw new Error("Invalid ID");
    }

    var data = JSON.parse(response.getContentText()).Response;

    const membershipId = data.membershipId;
    const membershipType = data.membershipType;

    url = API_BASE + "/User/GetMembershipsById/{id}/{type}".replace("{id}", membershipId).replace("{type}", membershipType);

    response = UrlFetchApp.fetch(url, options);
    data = JSON.parse(response.getContentText()).Response;

    const user = data.bungieNetUser;
    if (user == null || !user) {
      throw new Error("No Bungie account");
    }

    const name = user.displayName;

    // Cache timeout 120 minutes.
    const CACHE_TIMEOUT = 60 * 120;

    cache.put(cacheKey, name, CACHE_TIMEOUT);

    return name;

  } catch (e) {
    throw e;
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...