Доступ к данным в Google Sheets для заполнения с помощью Dialogflow - PullRequest
1 голос
/ 26 июня 2019

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

Пока что я просто скопировал копию из этого .В частности, строки 17, 20, 21, 23, 26, 28, 29, 30, 31 и 32. (Я также заменил такие вещи, как «client_email», который, насколько я могу судить, будет работать только с учетной записью службы, котораяЯ не могу использовать по финансовым причинам.)

<code>
'use strict';

const functions = require('firebase-functions')
const {dialogflow} = require('actions-on-google')
const {google} = require('googleapis')
const {WebHookClient} = require('dialogflow-fulfillment')

const sheets = google.sheets('v4')

const WELCOME_INTENT = 'Default Welcome Intent'
const FALLBACK_INTENT = 'Default Fallback Intent'
const MACHINE_OFF_INTENT = 'Machine off'
const MACHINE_ON_INTENT = 'Machine on'
const MACHINE_TYPE_ENTITY = 'machine'
const MEMBER_NUM_ENTITY = 'number-sequence'


const app = dialogflow()

app.intent(FALLBACK_INTENT, (conv) => {
 conv.ask("I didn't understand your request")
})

app.intent(MACHINE_OFF_INTENT, (conv) => {
    const machine_type = conv.parameters[MACHINE_TYPE_ENTITY].toLowerCase();
    const member_number = conv.parameters[MEMBER_NUM_ENTITY];
  const spreadsheetID =  "1n5VTSy5e8ger8FeKvKXymFMf2DGLK2lAKe_Qw2iG7Vc";
  const appl = SpreadsheetApp;
  const ss = appl.openById(spreadsheetID);
  const sheet = ss.getSheetByName("Authorizations");
  var engraverAuth = sheet.getRange("A1:A100");
  var woodshopAuth = sheet.getRange("B1:B100");
  var metalshopAuth = sheet.getRange("C1:C100");
  var allAuth = sheet.getRange("D1:D100");
  switch(machine_type){
        case "laser engraver":
        if (member_number.constructor == engraverAuth || member_number.constructor == allAuth) {

        }
      else {
       conv.ask("You are not authorized to use that machine"); 
      }
        break;
        case "woodshop":
          if (member_number.constructor ==woodshopAuth || member_number.constructor == allAuth) {

          }
            else {
       conv.ask("You are not authorized to use that machine"); 
      }
          break;
        case "metalshop":
          if (member_number.constructor ==metalshopAuth || member_number.constructor == allAuth) {

          }
            else {
       conv.ask("You are not authorized to use that machine");
      }
          break;
        default:

      }
})

exports.dialogflowFirebaseFulfillment = functions.https.onRequest(app)
</code>

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

...