[PYTHON] Erstellen Sie ein Skript für Ihre Pepper-Fertigkeit in einer Tabelle und laden Sie SayText direkt aus dem Skript

Was zu verwenden

Erläuterung

Früher habe ich Excel usw. verwendet, als ich das Skript für Pepper erstellt habe, aber jetzt verwende ich Google Spread Sheet, weil ich es überall im Browser oder bei der Entwicklung mit mehreren Personen erstellen möchte. Ich gebe auch die angepasste Konversation in das Skript ein und speichere sie. Daher ist es mühsam, jedes Mal zu kopieren und einzufügen und das verteilte Paket zu aktualisieren, sodass ich es so lesen konnte, wie es aus dem Skript stammt ..

Daher werde ich jeden Artikel als Memo beschreiben. Google SpreadSheet

Ich mache so ein Skript.

スクリーンショット 2016-06-23 22.07.31.png

Von links

  1. ID

Die Elemente können sich je nach Inhalt der Fertigkeit geringfügig ändern, aber im Grunde ist das Skript so erstellt. Nach dem Erstellen des Skripts "** XXXXXXXXXXXXXXXX (Buch-ID) " nach " https: //docs.google.com/spreadsheets/d/" in der URL von SpreadSheet und " XXXXXXXXXXXXXX (Buch-ID) " danach Notieren Sie sich die Nummer " 1234567 (Blatt-ID) " nach " / edit # gid = **". Diese werden beim Senden einer Anfrage von Choregraphe verwendet.

Google Apps Script

SayText.gs


//E-Mail-Adresse, die gesendet werden soll, wenn ein Fehler auftritt
var managerAddr = "[email protected]";


function doGet(e) {
  //Erhält einen Parameter namens param1.
  var json = JSON.parse(e.parameter.param1);
  //Öffnen Sie den Parameter BookID-Tabelle
  var ss = SpreadsheetApp.openById(decodeURI(json["sayDb_id"]));
  //Blatt in geöffnete Tabelle holen
  var sheets = ss.getSheets();
  
  for (var i in sheets){
    var sheet = sheets[i];
    //Starten Sie die Verarbeitung, wenn die durch den Parameter angegebene Blatt-ID gefunden wurde
    if (sheet.getSheetId() == json["db_id"]){
      var say_txt = getSayTxt(sheet);
    }
  }
  //Kehre mit json zurück
  return ContentService.createTextOutput(JSON.stringify(say_txt)).setMimeType(ContentService.MimeType.JSON);
}

function getSayTxt(sheet) {
  var sCol = 1;
  var sRow = 2;
  var lRow = sheet.getLastRow();
  
  //Die erste Zeile ist"id"Suchen Sie die Spalte mit dem Namen
  var sayIdCol = getSayTxtCol(sheet, "id");
  //Ähnlich"pepaLanguage"Suchen Sie die Spalte mit dem Namen
  var sayTxtCol = getSayTxtCol(sheet, "pepaLanguage");
  //Wenn nicht gefunden, kehren Sie mit einem Fehler zurück.
  if (sayTxtCol == 0 || sayIdCol == 0){
    GMailApp.sendMail(managerAddr, "Wenn getSay ausgeführt wird", "Es scheint ein Blatt zu geben, in dem die Spalte nicht gefunden werden kann." + sheet.getSheetId());
    Logger.log("Columns is not found");
    return [];
  }
  
  //"id"Wann"pepaLanguage"の位置を確認しておかしなこWannにならないようにしてる。
  if (sayIdCol > sayTxtCol){
    var data = sheet.getRange(sRow, sayTxtCol, lRow, sayIdCol).getValues();
  }else{
    var data = sheet.getRange(sRow, sayIdCol, lRow, sayTxtCol).getValues();
  }
  var json = new Object();
  var jsonArray = [];
  //ich werde hinzufügen
  for (var i = 0; i < data.length -1; i++){
    var val = data[i][sayIdCol - 1];
    if (val != "" && val != null){
      json[String(data[i][sayIdCol - 1])] = data[i][sayTxtCol - 1];
    }
  }
  jsonArray.push(json);
  return jsonArray;
}
  
function getSayTxtCol(sheet, title){
  var lCol = sheet.getLastColumn();
  for (var i = 1; i <= lCol; i++){
    if (sheet.getRange(1, i).getValue() == title){
      return i;
      break;
    }
  }
  return 0;
}

Choregraphe (Python) Wenn Sie sich Python ansehen, können Sie es sehen.

LoadSayText.py


class MyClass(GeneratedClass):
    def __init__(self):
        GeneratedClass.__init__(self)

    def onLoad(self):
        self.memory = ALProxy("ALMemory")

    def onUnload(self):
        self.memory = None

    def onInput_onStart(self):
        import urllib, urllib2, json
        #Machen Sie Parameter.
        #In der eigentlichen App wird es im Speicher übergeben.
        p = {
            "sayDb_id":XXXXXXXXXXXXXXXX(Book ID),
            "db_id":1234567(Sheet ID)
            }
        data ={}

        try:
            data['param1'] = json.dumps(p)
            url_values = urllib.urlencode(data)
            full_url = '%s?%s' % url(API-URL), url_values)
            request = urllib2.urlopen(full_url)
            self.json = json.loads(request.read(), "utf-8")[0]

            if len(self.json) == 0:
                self.onNotFound()
                return
            #Speichern Sie den zurückgegebenen Wert im Speicher.
            #Rufen Sie den gespeicherten Text mit SayBox auf und lassen Sie ihn sprechen.
            for key, value in self.json.items():
                self.memory.insertData("SayText/%d" % int(key), value.encode('utf-8'))
            self.onStopped()
        except Exception as e:
            self.logger.warn('==========Fehlerinhalt==========')
            self.logger.warn(e)
            self.logger.warn('============================')
            self.onError()

das Ende

Ich fand einen Ort, an dem ich schrieb, und es war wahrscheinlich, dass ein kleiner Fehler auftrat.

Recommended Posts

Erstellen Sie ein Skript für Ihre Pepper-Fertigkeit in einer Tabelle und laden Sie SayText direkt aus dem Skript
Hinweise zum Einbetten der Skriptsprache in Bash-Skripte
Hinweis 2 zum Einbetten der Skriptsprache in ein Bash-Skript
Analysieren Sie die Researchmap-API mit Python und erstellen Sie automatisch eine Word-Datei für die Leistungsliste
Erstellen Sie ein Modell zum Speichern von Informationen aus der Google Books-API für eine intuitive Handhabung und Prüfung
Speichern Sie die Pydrive-Authentifizierungsdatei in einem anderen Verzeichnis als das Skript
Ich habe ein POST-Skript erstellt, um ein Problem in Github zu erstellen und es im Projekt zu registrieren
Erstellen Sie ein Modell für Ihren Django-Zeitplan
Erstellen Sie mit RDKit einen Befehl zum Suchen nach ähnlichen Verbindungen aus der Zieldatenbank und überprüfen Sie die Verarbeitungszeit
Ändern Sie die Liste in der for-Anweisung
Führen Sie den Python-Interpreter im Skript aus
Testen Sie das Hochladen von Bildern, indem Sie in Python erstellen, ohne Dummy-Bilddateien in Django zu platzieren
Ich bekam das Datum von Kagawas Pub-Reis und zeichnete eine Grafik
Erstellen Sie ein Django-Projekt und eine Django-Anwendung in einer virtuellen Python-Umgebung und starten Sie den Server
[Django] Erstellen Sie ein Formular, das automatisch die Adresse aus der Postleitzahl ausfüllt
Erstellen Sie eine saubere Datenbank zum Testen mit FastAPI und führen Sie Unittest of API mit pytest aus
Erstellen Sie eine neue Todoist-Aufgabe aus Python Script
Laden Sie den Befehl von yml mit Python und führen Sie ihn aus
Rufen Sie Python-Skripte aus Embedded Python in C ++ / C ++ auf
Erstellen Sie ein Datum / Uhrzeit-Objekt aus einer Zeichenfolge in Python (Python 3.3).
Greifen Sie über REPL auf die im Skript definierten Variablen zu
Automatisieren Sie das Entfernen des Hintergrunds für die neuesten Porträts in einem Verzeichnis mit Python und API
Ein Python-Skript, das die Anzahl der Jobs für eine bestimmte Bedingung von Indeed.com abruft