Большой запрос API не использовался в этом проекте или был отключен - PullRequest
0 голосов
/ 08 мая 2018

Я запускаю код, который берет изображения с моего диска и помещает их в слайды Google.Также я пытаюсь экспортировать данные из большого запроса в таблицу в том же документе Google Slides.Я продолжаю получать эту ошибку, но API включен?

Кажется, проблема связана с этой строкой: var queryResults = BigQuery.Jobs.query (request, projectId);

Также дляпочему-то большие данные запроса не попадают в слайды Google в виде таблицы

function onOpen() {
  var ui = SpreadsheetApp.getUi();

  ui.createMenu('Custom Menu')
  .addItem('Generate Level B', 'showSidebar')
  .addToUi();
}


function showSidebar() {
  var ui = HtmlService.createHtmlOutputFromFile('sidebar')
  .setTitle('Generate Level B');
  SpreadsheetApp.getUi().showSidebar(ui);
}



function showPrompt() {

  var ui = SpreadsheetApp.getUi();

  var result = ui.prompt(
    'Generate custom company slide',
    'Please enter the ticker symbol for the company:',
    ui.ButtonSet.OK_CANCEL);

  // Process the user's response.
  var button = result.getSelectedButton();

  var text = result.getResponseText();

  if (button == ui.Button.OK) {
    // User clicked "OK".
    mergeSlide(text);

  } else if (button == ui.Button.CANCEL) {
    // User clicked "Cancel".
    return;
  } else if (button == ui.Button.CLOSE) {
    // User clicked X in the title bar.
    return;
  }
}

function test() {
  mergeSlide("DSYJ.J", "");}



function mergeSlide(tickerSymbol,companyName) {

  var ss = SpreadsheetApp.getActiveSpreadsheet();

  var sheet = ss.getSheets()[0];

  var lastRow = sheet.getLastRow();

  var dataTicker = flatten(sheet.getRange(3, 1, lastRow-2, 1).getValues());

  var dataName = flatten(sheet.getRange(3, 2, lastRow-2, 1).getValues());

  var dataDesc = flatten(sheet.getRange(3, 3, lastRow-2, 1).getValues());


  //Find index based on ticker/name

  if(tickerSymbol != ""){

    var index = dataTicker.indexOf(tickerSymbol);
    var companyDesc = dataDesc[index];  
    var companyName = dataName[index];  

  }else if(companyName != ""){

    var index = dataName.indexOf(companyName);
    var companyDesc = dataDesc[index];  
    var tickerSymbol = dataTicker[index]; 


  }else{

    return;

  }





  var slideUrl = DriveApp.getFileById("xxxx").makeCopy(companyName).getUrl();

  var slide = SlidesApp.openByUrl(slideUrl);

  var slides = slide.getSlides();



  //Slide1
  var shapesSlide1 = slides[0].getShapes();
  shapesSlide1[0].getText().setText(companyName);

  //Slide2
  var shapesSlide2 = slides[1].getShapes();
  shapesSlide2[0].getText().setText(companyDesc);


 //Slide3
  // Replace this value with the project ID listed in the Google Cloud Platform project.
  var projectId = 'vital-platform-791';
  var sqlQuery = 'SELECT Price FROM [vital-platform-791.feeds.chrome_blue_button_valuegrid_lookup] LIMIT 5';



  var request = {
    query: sqlQuery
  };

  var queryResults = BigQuery.Jobs.query(request, projectId);
  var jobId = queryResults.jobReference.jobId;

  // Check on status of the Query Job.
  var sleepTimeMs = 500;
  while (!queryResults.jobComplete) {
    Utilities.sleep(sleepTimeMs);
    sleepTimeMs *= 2;
    queryResults = BigQuery.Jobs.getQueryResults(projectId, jobId);
  }

  // Get all the rows of results.
  var rows = queryResults.rows;
  while (queryResults.pageToken) {
    queryResults = BigQuery.Jobs.getQueryResults(projectId, jobId, {
      pageToken: queryResults.pageToken
    });
    rows = rows.concat(queryResults.rows);
  }

  if (rows) {

    // Get the headers.
    var headers = queryResults.schema.fields.map(function(field) {
      return field.name;
    });

    // Get the results.
    var data = new Array(rows.length);
    for (var i = 0; i < rows.length; i++) {
      var cols = rows[i].f;
      data[i] = new Array(cols.length);
      for (var j = 0; j < cols.length; j++) {
        data[i][j] = cols[j].v;
      }
    }

    var table = slides[2].insertTable(rows.length+1, headers.length);

    //Fill up the table header
    for(var m = 0; m< headers.length; m++){

      table.getCell(0,m).getText().setText(headers[m]).getTextStyle().setForegroundColor(255,0,86).setBold(true);

    }


    //Fill up rest of table
    for(var k = 1; k< rows.length+1; k++){

      for(var m = 0; m< headers.length; m++){

        table.getCell(k,m).getText().setText(data[k-1][m]);

      }

    }

  }



  //Slide4
  var shapeSlide4 = slides[3].getShapes();
  var priceChangeImage = DriveApp.getFilesByName("Price Change_"+tickerSymbol+".png").next();
  var newImage4 = shapeSlide4[0].replaceWithImage(priceChangeImage);
  newImage4.setWidth(650);
  newImage4.alignOnPage(SlidesApp.AlignmentPosition.HORIZONTAL_CENTER);

  //Slide5
  var shapeSlide5 = slides[4].getShapes();
  var earningsRevisionsImage = DriveApp.getFilesByName("Earnings Revisions_"+tickerSymbol+".png").next();
  var newImage5 = shapeSlide5[0].replaceWithImage(earningsRevisionsImage);
  newImage5.setWidth(650);
  newImage5.alignOnPage(SlidesApp.AlignmentPosition.HORIZONTAL_CENTER);

  //Slide6
  var shapeSlide6 = slides[5].getShapes();
  var FgpeImage = DriveApp.getFilesByName("F-GPE_"+tickerSymbol+".png").next();
  var newImage6 = shapeSlide6[0].replaceWithImage(FgpeImage);
  newImage6.setWidth(650);
  newImage6.alignOnPage(SlidesApp.AlignmentPosition.HORIZONTAL_CENTER);


  newSlideNotify(slideUrl);

}



// Takes and array of arrays matrix and return an array of elements.
function flatten(arrayOfArrays){
  return [].concat.apply([], arrayOfArrays);
}


function newSlideNotify(url) {

  var htmlOutput = HtmlService
  .createHtmlOutput('<p style="font-family:Arial;font-size:13px;">A Level B report has been created for the company that you have selected.<br><br>This new file has been placed in the same folder with the Slide Template.<br><br></p><a href="'+url+'" target="_top" style="font-family:Arial;font-size:13px;">Open Level B</a>')
  .setSandboxMode(HtmlService.SandboxMode.IFRAME)
  .setWidth(500)
  .setHeight(150);

  SpreadsheetApp.getUi().showModalDialog(htmlOutput, 'Level B Generated!');

}





function getList() {

  var ss = SpreadsheetApp.getActiveSpreadsheet();

  var sheet = ss.getSheets()[0];

  var lastRow = sheet.getLastRow();

  var dataTicker = flatten(sheet.getRange(3, 1, lastRow-2, 1).getValues());
  var dataName = flatten(sheet.getRange(3, 2, lastRow-2, 1).getValues());

  return [dataTicker,dataName];

}

Ответы [ 2 ]

0 голосов
/ 08 мая 2018

Ошибка выглядит так?

Доступ не настроен.BigQuery API ранее не использовался в проекте 5622793721 или он отключен.Включите его

Если это так, проблема в том, что вам нужно перейти на свою панель инструментов и включить ее.

  1. Откройте файл сценария
  2. Перейдите наРесурсы> Расширенные службы Google
  3. Обратите внимание на сообщение, в котором указано Эти службы также должны быть включены в консоли API Google.
  4. Нажмите на ссылку, где написано Google APIКонсоль
  5. После поиска 'bigquery' не выбирайте тот, который называется Bigquery API.Вы ищете тот, который называется BigQuery Data Transfer API
  6. Включите его
  7. Запустите ваш код еще раз, чтобы увидеть, работает ли он сейчас
  8. Возможно, у вас естьчтобы активировать адрес электронной почты для управления пользователями Google Analytics.
0 голосов
/ 08 мая 2018

Вам необходимо включить расширенный сервис для BigQuery в вашем Google-Apps-скрипте:

В по этой ссылке о сервисе BigQuery:

Примечание. Это расширенная служба, которую необходимо включить перед использованием.

... который перенаправляет вас по этой ссылке , где объясняется, как включить расширенные службы :

  1. В редакторе сценариев выберите Ресурсы> Расширенные службы Google ....
  2. Нажмите переключатель вкл / выкл рядом с сервисом, который вы хотите использовать (в вашем случае BigQuery API).
  3. Нажмите ОК.

Следующие шаги в ссылке объясняют, как включить API в консоли GOOGLE CLOUD PLATFORM (что, как я полагаю, вы уже сделали, поскольку сказали, что API уже включен)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...