In dieser Anleitung wird beschrieben, wie Sie benutzerdefinierte Logs und Fehlermeldungen schreiben, die Ihnen helfen, Fehler bei einem Schritt zu beheben, der auf dem Tab „Workspace Studio-Aktivität“ nicht ausgeführt wird.
Auf dem Tab „Aktivität“ wird standardmäßig der Name des Schritts protokolliert, der gemäß der Manifestdatei ausgeführt wird. Damit Sie nachvollziehen können, was während der Ausführung eines Schritts passiert ist, sollten Sie auch benutzerdefinierte Logs für Ihren Schritt schreiben. Wenn Nutzer beim Ausführen Ihres Schritts auf unerwartetes Verhalten stoßen, können sie anhand Ihrer Protokolle nachvollziehen, was passiert ist.
Ein hilfreicher Logeintrag hat zwei Attribute:
- Ein Chip mit einem Hyperlink zur Ressource, die durch den Schritt erstellt oder aktualisiert wurde. Wenn in Ihrem Schritt beispielsweise ein Google-Dokument erstellt wird, können Sie mit dem Chip einen Link zum erstellten Google-Dokument einfügen.
- Eine detaillierte Fehlermeldung, die beschreibt, warum ein Schritt nicht ausgeführt wurde und wie das Problem behoben werden kann.
Das folgende Codebeispiel zeigt, wie onExecuteFunctionCreateDocument() einen erfolgreichen Lauf und einen Fehler auf dem Tab „Aktivität“ protokollieren kann.
Hier ist die Manifestdatei:
JSON
{
"timeZone": "America/Los_Angeles",
"exceptionLogging": "STACKDRIVER",
"runtimeVersion": "V8",
"addOns": {
"common": {
"name": "Log and Error Demo",
"logoUrl": "https://www.gstatic.com/images/branding/productlogos/gsuite_addons/v6/web-24dp/logo_gsuite_addons_color_1x_web_24dp.png",
"useLocaleFromApp": true
},
"flows": {
"workflowElements": [
{
"id": "log_and_error_demo",
"state": "ACTIVE",
"name": "Log and Error Demo",
"description": "Display a log message when executed successfully, display a error message and retry execution instead.",
"workflowAction": {
"inputs": [
{
"id": "value1",
"description": "value1",
"cardinality": "SINGLE",
"dataType": {
"basicType": "INTEGER"
}
}
],
"outputs": [
{
"id": "result",
"description": "execution result",
"cardinality": "SINGLE",
"dataType": {
"basicType": "STRING"
}
}
],
"onConfigFunction": "onConfigFunctionCreateDocument",
"onExecuteFunction": "onExecuteFunctionCreateDocument"
}
}
]
}
}
}
Hier ist der Code für die Anwendungslogik:
Apps Script
function onConfigFunctionCreateDocument() {
const firstInput = CardService.newTextInput()
.setFieldName("value1")
.setTitle("First Value") //"FieldName" must match an "id" in the manifest file's inputs[] array.
.setHint("Input 1 to successfully execute the step, 0 to fail the step and return an error.")
.setHostAppDataSource(
CardService.newHostAppDataSource()
.setWorkflowDataSource(
CardService.newWorkflowDataSource()
.setIncludeVariables(true)
)
);
let cardSection = CardService.newCardSection()
.addWidget(firstInput);
return CardService.newCardBuilder()
.addSection(cardSection)
.build();
}
function onExecuteFunctionCreateDocument(event) {
// true if the document is successfully created, false if something goes wrong.
var successfulRun = event.workflow.actionInvocation.inputs["value1"].integerValues[0];
console.log("The user input is: ", successfulRun);
// If successful, return an activity log linking to the created document.
if (successfulRun == 1) {
let logChip = AddOnsResponseService.newTextFormatChip()
.setTextFormatIcon(
AddOnsResponseService.newTextFormatIcon()
.setMaterialIconName("edit_document")
)
.setUrl("https://docs.google.com/document/d/{DOCUMENT}")
.setLabel("Mock Document");
let output = AddOnsResponseService.newVariableData()
.addStringValue("Created Google Doc");
const workflowAction = AddOnsResponseService.newReturnOutputVariablesAction()
.addVariableData("result", output)
// Set the user-facing error log
.setLog(
AddOnsResponseService.newWorkflowTextFormat()
.addTextFormatElement(
AddOnsResponseService.newTextFormatElement()
.setText("Created Google Doc")
)
.addTextFormatElement(
AddOnsResponseService.newTextFormatElement()
.setTextFormatChip(logChip)
)
.addTextFormatElement(
AddOnsResponseService.newTextFormatElement()
.setText("Created doc detailing how to improve product.")
)
);
let hostAppAction = AddOnsResponseService.newHostAppAction()
.setWorkflowAction(workflowAction);
return AddOnsResponseService.newRenderActionBuilder()
.setHostAppAction(hostAppAction)
.build();
}
// Otherwise, return an activity log containing an error explaining what happened and how to resolve the issue.
else {
let errorChip = AddOnsResponseService.newTextFormatChip()
.setTextFormatIcon(
AddOnsResponseService.newTextFormatIcon()
.setMaterialIconName("file_open")
)
.setLabel("Mock Document");
const workflowAction = AddOnsResponseService.newReturnElementErrorAction()
.setErrorActionability(AddOnsResponseService.ErrorActionability.ACTIONABLE)
.setErrorRetryability(AddOnsResponseService.ErrorRetryability.NOT_RETRYABLE)
// Set the user-facing error log
.setErrorLog(
AddOnsResponseService.newWorkflowTextFormat()
.addTextFormatElement(
AddOnsResponseService.newTextFormatElement()
.setText("Failed to create Google Doc.")
)
.addTextFormatElement(
AddOnsResponseService.newTextFormatElement()
.setTextFormatChip(errorChip)
)
.addTextFormatElement(
AddOnsResponseService.newTextFormatElement()
.setText("Unable to create Google Document because OAuth verification failed. Grant one of these authorization scopes and try again: https://www.googleapis.com/auth/documents, \nhttps://www.googleapis.com/auth/drive, \nhttps://www.googleapis.com/auth/drive.file")
)
);
let hostAppAction = AddOnsResponseService.newHostAppAction()
.setWorkflowAction(workflowAction);
return AddOnsResponseService.newRenderActionBuilder()
.setHostAppAction(hostAppAction)
.build();
}
}
Weitere Informationen
- Schritt erstellen
- Eingabevariablen
- Eingabevariable validieren
- Ausgabevariablen
- Workspace Studio-Ereignisobjekte