Z tego przewodnika dowiesz się, jak pisać niestandardowe logi i komunikaty o błędach. Te komunikaty pojawiają się na karcie Aktywność w Workspace Studio i mogą pomóc w rozwiązywaniu problemów z krokami, które nie działają.
Domyślnie na karcie Aktywność rejestrowana jest nazwa kroku, który jest wykonywany, zgodnie z definicją w pliku manifestu. Aby ułatwić zrozumienie, co się stało podczas wykonywania kroku, warto też napisać niestandardowe logi dla tego kroku. Jeśli użytkownicy napotkają nieoczekiwane zachowanie podczas wykonywania kroku, logi mogą im pomóc zrozumieć, co się stało.
Przydatny wpis logu ma 2 atrybuty:
- Chip zawierający hiperlink do zasobu utworzonego lub zaktualizowanego przez krok. Jeśli np. krok tworzy Dokument Google, użyj chipa, aby utworzyć link do utworzonego Dokumentu Google.
- Szczegółowy komunikat o błędzie opisujący, dlaczego nie udało się wykonać kroku, i jak rozwiązać ten problem.
Tworzenie logu aktywności
Poniższy przykładowy kod pokazuje, jak funkcja onExecuteFunctionCreateDocument() może rejestrować udane wykonanie i błąd na karcie Aktywność.
Oto plik manifestu:
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"
}
}
]
}
}
}
Oto kod logiki aplikacji:
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();
}
}
Wyświetlanie logów aktywności
Aby wyświetlić logi aktywności, otwórz kartę Aktywność w Workspace Studio. Wyświetla ona historię wykonywania kroków, w tym wszelkie zdefiniowane przez Ciebie niestandardowe logi lub komunikaty o błędach.
Powiązane artykuły
- Tworzenie kroku
- Zmienne wejściowe
- Sprawdzanie poprawności zmiennej wejściowej
- Zmienne wyjściowe
- Obiekty zdarzeń Workspace Studio