כדי לאפשר למשתמשים לבחור קבצים או תיקיות מ-Google Drive, אפשר להגדיר ווידג'ט של SelectionInput לשימוש בכלי לבחירת קבצים של Google. במדריך הזה מוסבר איך להגדיר את בורר Google בכרטיס ההגדרות של התוסף.
הגדרת הכלי לבחירת קבצים ב-Google
כדי להפעיל את הווידג'ט של קלט הבחירה כדי לבחור קבצים או תיקיות מ-Google Drive, צריך להגדיר את PlatformDataSource שלו עם CommonDataSource ו-DriveDataSourceSpec.
- מגדירים את
CommonDataSourceלערךDRIVE. הפעולה הזו מגדירה את Google Drive כמקור לקלט של הבחירה. - (אופציונלי) כדי לציין אילו סוגי קבצים המשתמשים יכולים לבחור, מוסיפים
DriveDataSourceSpec. אפשר לציין סוג אחד או יותר של פריטים:DOCUMENTSSPREADSHEETSPRESENTATIONSPDFSFORMSFOLDERS
דוגמה: בחירת גיליונות אלקטרוניים וקובצי PDF
בדוגמה הבאה מוצג כרטיס הגדרה שמאפשר למשתמשים לבחור כמה גיליונות אלקטרוניים או קובצי PDF מ-Google Drive. כשהשלב מופעל, הוא מחזיר את מזהי הקבצים של הפריטים שנבחרו כמשתני פלט.
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();
}