Google Picker की मदद से, Google Drive में मौजूद फ़ाइलें और फ़ोल्डर चुनना

उपयोगकर्ताओं को Google Drive से फ़ाइलें या फ़ोल्डर चुनने की सुविधा देने के लिए, Google Picker का इस्तेमाल करने के लिए SelectionInput विजेट कॉन्फ़िगर किया जा सकता है. इस गाइड में, आपके ऐड-ऑन के कॉन्फ़िगरेशन कार्ड में Google Picker को सेट अप करने का तरीका बताया गया है.

Google Picker को कॉन्फ़िगर करना

Google Drive से फ़ाइलें या फ़ोल्डर चुनने के लिए, आपको सिलेक्शन इनपुट विजेट को चालू करना होगा. इसके लिए, आपको PlatformDataSource को CommonDataSource और DriveDataSourceSpec के साथ कॉन्फ़िगर करना होगा.

  1. CommonDataSource को DRIVE पर सेट करें. इससे Google Drive को, चुनने के लिए इनपुट के सोर्स के तौर पर सेट किया जाता है.
  2. (ज़रूरी नहीं) यह तय करने के लिए कि उपयोगकर्ता किस तरह की फ़ाइलें चुन सकते हैं, DriveDataSourceSpec जोड़ें. इनमें से एक या एक से ज़्यादा आइटम टाइप तय किए जा सकते हैं:
    • DOCUMENTS
    • SPREADSHEETS
    • PRESENTATIONS
    • PDFS
    • FORMS
    • FOLDERS

उदाहरण: स्प्रेडशीट और PDF फ़ाइलें चुनना

यहां दिए गए उदाहरण में, एक कॉन्फ़िगरेशन कार्ड बनाया गया है. इससे उपयोगकर्ता, Google Drive से एक से ज़्यादा स्प्रेडशीट या PDF फ़ाइलें चुन सकते हैं. यह चरण पूरा होने पर, चुने गए आइटम के फ़ाइल आईडी, आउटपुट वैरिएबल के तौर पर दिखते हैं.

JSON

{
  "timeZone": "America/Los_Angeles",
  "exceptionLogging": "STACKDRIVER",
  "runtimeVersion": "V8",
  "addOns": {
    "common": {
      "name": "Google 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": "file_id",
                "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() {
  // Specify the file types to allow. In this example, users can
  // select either spreadsheets or PDFs.
  const driveSpec = CardService.newDriveDataSourceSpec()
    .addItemType(CardService.DriveItemType.SPREADSHEETS)
    .addItemType(CardService.DriveItemType.PDFS);

  // Set Google Drive as the data source for the selection input.
  const platformSource = CardService.newPlatformDataSource()
    .setCommonDataSource(CardService.CommonDataSource.DRIVE)
    .setDriveDataSourceSpec(driveSpec);

  // Create the selection input widget.
  const selectionInput =
    CardService.newSelectionInput().setFieldName("drive_picker_1")
      .setPlatformDataSource(platformSource)
      .setTitle("Google Picker")
      .setType(CardService.SelectionInputType.MULTI_SELECT);

  // Build the card section and add the widget.
  var sectionBuilder =
    CardService.newCardSection()
      .addWidget(selectionInput);

  // Build the card and return it.
  var card =
    CardService.newCardBuilder()
      .addSection(sectionBuilder)
      .build();

  return card;
}

/**
 * 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) {
  // Get the file ID from the input event object.
  var fileId = event.workflow.actionInvocation.inputs["drive_picker_1"].stringValues[0];

  // Create a variableData object to hold the output.
  const variableData = AddOnsResponseService.newVariableData().addStringValue(fileId);

  // Create a log message for the Activity tab.
  let textFormatElement = AddOnsResponseService.newTextFormatElement().setText("A file has been selected!");
  let workflowTextFormat = AddOnsResponseService.newWorkflowTextFormat().addTextFormatElement(textFormatElement);

  // Create the return action to output the variable. The string key ("result")
  // must match the ID of the output defined in the manifest.
  let returnAction = AddOnsResponseService.newReturnOutputVariablesAction()
      .setVariables({ "file_id": variableData }).setLog(workflowTextFormat);

  // Build and return the render action.
  let hostAppAction = AddOnsResponseService.newHostAppAction().setWorkflowAction(returnAction);

  const renderAction = AddOnsResponseService.newRenderActionBuilder().setHostAppAction(hostAppAction).build();
  return renderAction;
}