В этом руководстве объясняется, как писать пользовательские журналы и сообщения об ошибках, которые помогут устранить неполадки, возникающие при выполнении шага на вкладке «Активность» в Workspace Studio.
По умолчанию на вкладке «Активность» регистрируется имя выполняемого шага, как определено в его файле манифеста. Чтобы лучше понять, что произошло во время выполнения шага, вам также следует вести собственные журналы для вашего шага. Если пользователи сталкиваются с непредвиденным поведением во время выполнения вашего шага, ваши журналы могут помочь им понять, что произошло.
Полезная запись в журнале имеет два атрибута:
- Чип, содержащий гиперссылку на ресурс, созданный или обновлённый на данном этапе. Например, если ваш этап создаёт документ Google, используйте чип для ссылки на созданный документ Google.
- Подробное сообщение об ошибке, описывающее, почему не удалось выполнить шаг и как решить проблему.
В следующем примере кода показано, как onExecuteFunctionCreateDocument() может регистрировать успешное выполнение и ошибку на вкладке Activity.
Вот файл манифеста:
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"
}
}
]
}
}
}
Вот код логики приложения:
Скрипт приложений
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();
}
}
Похожие темы
- Построить шаг
- Входные переменные
- Проверить входную переменную
- Выходные переменные
- Объекты событий Workspace Studio