Java क्विकस्टार्ट

एक आसान Java कमांड-लाइन ऐप्लिकेशन बनाने के लिए, जो इस पेज के बाकी हिस्से में बताए गए चरणों को पूरा करता है और Google Apps स्क्रिप्ट एपीआई से अनुरोध करता है.

ज़रूरी बातें

इस क्विकस्टार्ट को चलाने के लिए, आपको इन शर्तों को पूरा करना होगा:

  • डेस्कटॉप ऐप्लिकेशन के लिए अनुमति देने वाले क्रेडेंशियल. किसी डेस्कटॉप ऐप्लिकेशन के लिए क्रेडेंशियल बनाने का तरीका जानने के लिए, क्रेडेंशियल बनाएं देखें.

  • ऐसा Google खाता जिसमें Google Drive चालू हो.

पहला चरण: प्रोजेक्ट तैयार करना

प्रोजेक्ट तैयार करने के लिए:

  1. अपनी काम करने वाली निर्देशिका में, नया प्रोजेक्ट स्ट्रक्चर बनाने के लिए नीचे दिए गए निर्देश चलाएं:

    gradle init --type basic
    mkdir -p src/main/java src/main/resources 
    
  2. ज़रूरी शर्त के तौर पर डाउनलोड की गई credentials.json फ़ाइल को, नई बनाई गई src/main/resources/ डायरेक्ट्री में कॉपी करें.

  3. डिफ़ॉल्ट build.gradle फ़ाइल खोलें और इसकी सामग्री को नीचे दिए गए कोड से बदलें:

    AppsScript/quickstart/build.gradle
    apply plugin: 'java'
    apply plugin: 'application'
    
    mainClassName = 'AppsScriptQuickstart'
    sourceCompatibility = 11
    targetCompatibility = 11
    version = '1.0'
    
    repositories {
        mavenCentral()
    }
    
    dependencies {
        implementation 'com.google.api-client:google-api-client:1.33.0'
        implementation 'com.google.oauth-client:google-oauth-client-jetty:1.32.1'
        implementation 'com.google.apis:google-api-services-script:v1-rev20210703-1.32.1'
    }
    

दूसरा चरण: सैंपल सेट अप करना

सैंपल सेट अप करने के लिए:

  1. src/main/java/ में, एक नई Java फ़ाइल बनाएं. इसका नाम ऐसा होना चाहिए जो आपकी build.gradle फ़ाइल की mainClassName वैल्यू से मेल खाता हो.
  2. अपनी नई Java फ़ाइल में नीचे दिया गया कोड शामिल करें:

    AppsScript/Quickstart/src/main/java/AppsScriptQuickstart.java
    import com.google.api.client.auth.oauth2.Credential;
    import com.google.api.client.extensions.java6.auth.oauth2.AuthorizationCodeInstalledApp;
    import com.google.api.client.extensions.jetty.auth.oauth2.LocalServerReceiver;
    import com.google.api.client.googleapis.auth.oauth2.GoogleAuthorizationCodeFlow;
    import com.google.api.client.googleapis.auth.oauth2.GoogleClientSecrets;
    import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport;
    import com.google.api.client.http.javanet.NetHttpTransport;
    import com.google.api.client.json.JsonFactory;
    import com.google.api.client.json.gson.GsonFactory;
    import com.google.api.client.util.store.FileDataStoreFactory;
    import com.google.api.services.script.Script;
    import com.google.api.services.script.model.Content;
    import com.google.api.services.script.model.CreateProjectRequest;
    import com.google.api.services.script.model.File;
    import com.google.api.services.script.model.Project;
    import java.io.FileNotFoundException;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.security.GeneralSecurityException;
    import java.util.Arrays;
    import java.util.Collections;
    import java.util.List;
    
    public class AppsScriptQuickstart {
      private static final String APPLICATION_NAME = "Apps Script API Java Quickstart";
      private static final JsonFactory JSON_FACTORY = GsonFactory.getDefaultInstance();
      private static final String TOKENS_DIRECTORY_PATH = "tokens";
    
      /**
       * Global instance of the scopes required by this quickstart.
       * If modifying these scopes, delete your previously saved credentials folder at /secret.
       */
      private static final List<String> SCOPES =
          Collections.singletonList("https://www.googleapis.com/auth/script.projects");
      private static final String CREDENTIALS_FILE_PATH = "/credentials.json";
    
      /**
       * Creates an authorized Credential object.
       *
       * @param HTTP_TRANSPORT The network HTTP Transport.
       * @return An authorized Credential object.
       * @throws IOException If the credentials.json file cannot be found.
       */
      private static Credential getCredentials(final NetHttpTransport HTTP_TRANSPORT)
          throws IOException {
        // Load client secrets.
        InputStream in = AppsScriptQuickstart.class.getResourceAsStream(CREDENTIALS_FILE_PATH);
        if (in == null) {
          throw new FileNotFoundException("Resource not found: " + CREDENTIALS_FILE_PATH);
        }
        GoogleClientSecrets clientSecrets =
            GoogleClientSecrets.load(JSON_FACTORY, new InputStreamReader(in));
    
        // Build flow and trigger user authorization request.
        GoogleAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow.Builder(
            HTTP_TRANSPORT, JSON_FACTORY, clientSecrets, SCOPES)
            .setDataStoreFactory(new FileDataStoreFactory(new java.io.File(TOKENS_DIRECTORY_PATH)))
            .setAccessType("offline")
            .build();
        LocalServerReceiver receiver = new LocalServerReceiver.Builder().setPort(8888).build();
        return new AuthorizationCodeInstalledApp(flow, receiver).authorize("user");
      }
    
      public static void main(String... args) throws IOException, GeneralSecurityException {
        // Build a new authorized API client service.
        final NetHttpTransport HTTP_TRANSPORT = GoogleNetHttpTransport.newTrustedTransport();
        Script service =
            new Script.Builder(HTTP_TRANSPORT, JSON_FACTORY, getCredentials(HTTP_TRANSPORT))
                .setApplicationName(APPLICATION_NAME)
                .build();
        Script.Projects projects = service.projects();
    
        // Creates a new script project.
        Project createOp = projects.create(new CreateProjectRequest().setTitle("My Script")).execute();
    
        // Uploads two files to the project.
        File file1 = new File()
            .setName("hello")
            .setType("SERVER_JS")
            .setSource("function helloWorld() {\n  console.log(\"Hello, world!\");\n}");
        File file2 = new File()
            .setName("appsscript")
            .setType("JSON")
            .setSource("{\"timeZone\":\"America/New_York\",\"exceptionLogging\":\"CLOUD\"}");
        Content content = new Content().setFiles(Arrays.asList(file1, file2));
        Content updatedContent = projects.updateContent(createOp.getScriptId(), content).execute();
    
        // Logs the project URL.
        System.out.printf("https://script.google.com/d/%s/edit\n", updatedContent.getScriptId());
      }
    }

तीसरा चरण: सैंपल चलाना

सैंपल चलाने के लिए:

  1. यह निर्देश लागू करें:

    gradle run
    

    यह निर्देश नमूना बनाता और चलाता है.

  2. (ज़रूरी नहीं). अगर आप पहली बार नमूना चला रहे हैं, तो नमूना एक नई विंडो में खुलता है जो आपको अपने डेटा का ऐक्सेस देने का संकेत देता है:

    1. अगर आपने पहले से अपने Google खाते में साइन इन नहीं किया है, तो आपको साइन इन करने के लिए कहा जाता है. अगर आपने एक से ज़्यादा Google खातों में साइन इन किया हुआ है, तो आपको अनुमति के लिए इस्तेमाल किया जाने वाला एक खाता चुनने के लिए कहा जाएगा.
    1. स्वीकार करें पर क्लिक करें. इस ऐप्लिकेशन को आपका डेटा ऐक्सेस करने की अनुमति है.
  3. नमूना एक्ज़ीक्यूट होता है.

अगर आपको समस्याएं आ रही हैं, तो सैंपल की समस्या हल करें सेक्शन देखें.

सैंपल की समस्या हल करना

इस सेक्शन में एक ऐसी सामान्य समस्या के बारे में बताया गया है जिसका सामना आपको इस क्विकस्टार्ट को चलाने के लिए करना पड़ सकता है.

This app isn't verified

अगर OAuth के लिए सहमति वाली स्क्रीन पर चेतावनी और कोटेशन दिखता है, तो इस ऐप्लिकेशन की पुष्टि नहीं की गई है. इसकी वजह से, आपका ऐप्लिकेशन ऐसे दायरे का अनुरोध कर रहा है जो उपयोगकर्ता के संवेदनशील डेटा को ऐक्सेस करने की सुविधा देता है. अगर आपका ऐप्लिकेशन संवेदनशील दायरों का इस्तेमाल करता है, तो उस चेतावनी और दूसरी सीमाओं को हटाने के लिए, आपके ऐप्लिकेशन को पुष्टि की प्रक्रिया से गुज़रना होगा. डेवलपमेंट फ़ेज़ के दौरान, आप बेहतर &gt चुनकर, इस चेतावनी से आगे जा सकते हैं; {Project Name} पर जाएं (असुरक्षित).

File not found error for credentials.json

सैंपल चलाने पर, हो सकता है कि आपको कोई फ़ाइल न मिले या क्रेडेंशियल.json से जुड़ी कोई फ़ाइल गड़बड़ी न हो.

यह गड़बड़ी तब होती है, जब आपने ऊपर दिए गए ज़रूरी शर्तें सेक्शन में दी गई जानकारी के मुताबिक, डेस्कटॉप ऐप्लिकेशन क्रेडेंशियल को अनुमति नहीं दी हो. किसी डेस्कटॉप ऐप्लिकेशन के लिए क्रेडेंशियल बनाने का तरीका जानने के लिए, क्रेडेंशियल बनाएं पर जाएं.

क्रेडेंशियल बनाने के बाद, पक्का करें कि डाउनलोड की गई JSON फ़ाइल credentials.json के तौर पर सेव की गई है. इसके बाद, फ़ाइल को बाकी काम के कोड के साथ काम करने वाली डायरेक्ट्री पर ले जाएं.

आगे पढ़ना

इस क्विकस्टार्ट में इस्तेमाल किए गए एपीआई के बारे में ज़्यादा जानकारी के लिए, ये बातें देखें: