Pour permettre aux utilisateurs de sélectionner des fichiers ou des dossiers dans Google Drive, vous pouvez configurer un widget SelectionInput pour utiliser le sélecteur Google. Ce guide explique comment configurer le sélecteur Google dans la fiche de configuration de votre module complémentaire.
Configurer le sélecteur Google
Pour permettre au widget de saisie de sélection de sélectionner des fichiers ou des dossiers depuis Google Drive, vous devez configurer son PlatformDataSource avec CommonDataSource et DriveDataSourceSpec.
- Définissez
CommonDataSourcesurDRIVE. Cela désigne Google Drive comme source pour la sélection. - (Facultatif) Pour spécifier les types de fichiers que les utilisateurs peuvent sélectionner, ajoutez un
DriveDataSourceSpec. Vous pouvez spécifier un ou plusieurs des types d'éléments suivants :DOCUMENTSSPREADSHEETSPRESENTATIONSPDFSFORMSFOLDERS
Exemple : Sélectionner des feuilles de calcul et des PDF
L'exemple suivant crée une fiche de configuration qui permet aux utilisateurs de sélectionner plusieurs feuilles de calcul ou fichiers PDF dans Google Drive. Lorsque l'étape s'exécute, elle renvoie les ID de fichier des éléments sélectionnés en tant que variables de sortie.
JSON
{
"timeZone": "America/Los_Angeles",
"exceptionLogging": "STACKDRIVER",
"runtimeVersion": "V8",
"addOns": {
"common": {
"name": "Drive Picker Demo",
"logoUrl": "https://www.gstatic.com/images/icons/material/system/1x/pets_black_48dp.png",
"useLocaleFromApp": true
},
"flows": {
"workflowElements": [
{
"id": "file_selection",
"state": "ACTIVE",
"name": "File selection",
"workflowAction": {
"inputs": [
{
"id": "drive_picker_1",
"description": "Choose a file from Google Drive",
"dataType": {
"basicType": "STRING"
}
}
],
"outputs": [
{
"id": "fileId",
"description": "The id of the selected file",
"cardinality": "SINGLE",
"dataType": {
"basicType": "STRING"
}
}
],
"onConfigFunction": "onConfig",
"onExecuteFunction": "onExecute"
}
}
]
}
}
}
Apps Script
/**
* Returns a configuration card for the step.
* This card includes a selection input widget configured as a Google Picker
* that lets users select spreadsheets and PDFs.
*/
function onConfig() {
// Allows users to select either spreadsheets or PDFs
const driveSpec = CardService.newDriveDataSourceSpec()
.addItemType(
CardService.DriveItemType.SPREADSHEETS
)
.addItemType(
CardService.DriveItemType.PDFS
);
const platformSource = CardService.newPlatformDataSource()
.setCommonDataSource(
CardService.CommonDataSource.DRIVE
)
.setDriveDataSourceSpec(driveSpec);
const selectionInput =
CardService.newSelectionInput()
.setFieldName("drive_picker_1")
.setPlatformDataSource(platformSource)
.setTitle("Drive Picker")
.setType(
CardService.SelectionInputType.MULTI_SELECT
);
var sectionBuilder =
CardService.newCardSection()
.addWidget(selectionInput)
return CardService.newCardBuilder()
.addSection(sectionBuilder)
.build();
}
/**
* Executes when the step runs.
* This function retrieves the file ID of the item selected in the Google Picker
* and returns it as an output variable.
* @param {Object} event The event object passed by the Flows runtime.
* @return {Object} The output variables object.
*/
function onExecute(event) {
//Extract the selected file's ID during execution
console.log("eventObject: " + JSON.stringify(event));
var fileId = event.workflow.actionInvocation.inputs["drive_picker_1"].stringValues[0];
const variableData = AddOnsResponseService.newVariableData()
.addStringValue(fileId);
let textFormatElement = AddOnsResponseService.newTextFormatElement()
.setText("A file has been selected!");
let workflowTextFormat = AddOnsResponseService.newWorkflowTextFormat()
.addTextFormatElement(textFormatElement);
let workflowAction = AddOnsResponseService.newReturnOutputVariablesAction()
.addVariableData("fileId", variableData)
.setLog(workflowTextFormat);
let hostAppAction = AddOnsResponseService.newHostAppAction()
.setWorkflowAction(workflowAction);
return AddOnsResponseService.newRenderActionBuilder()
.setHostAppAction(hostAppAction)
.build();
}