如要讓使用者從 Google 雲端硬碟選取檔案或資料夾,可以設定 SelectionInput 小工具來使用 Google Picker。本指南說明如何在外掛程式的設定資訊卡中設定 Google Picker。
設定 Google Picker
如要啟用選取輸入小工具,從 Google 雲端硬碟選取檔案或資料夾,您必須使用 CommonDataSource 和 DriveDataSourceSpec 設定 PlatformDataSource。
- 將 CommonDataSource設為DRIVE。這會將 Google 雲端硬碟指定為選取輸入的來源。
- (選用) 如要指定使用者可選取的檔案類型,請新增 DriveDataSourceSpec。你可以指定下列一或多個項目類型:- DOCUMENTS
- SPREADSHEETS
- PRESENTATIONS
- PDFS
- FORMS
- FOLDERS
 
範例:選取試算表和 PDF
以下範例會建構設定資訊卡,讓使用者從 Google 雲端硬碟選取多個試算表或 PDF 檔案。步驟執行時,會將所選項目的檔案 ID 做為輸出變數傳回。
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;
}