ביטול ההגדרה של שדה תווית בקובץ

במאמר זה נסביר איך לבטל את ההגדרה של תווית Field בקובץ אחד ב-Google Drive.

כדי להסיר מטא-נתונים מקובץ על ידי ביטול ההגדרה של תווית קובץ, משתמשים ב-method files.modifyLabels. גוף הבקשה מכיל מופע של ModifyLabelsRequest שמאפשר לשנות את קבוצת התוויות בקובץ. הבקשה עשויה לכלול מספר שינויים מיושמים באופן אטומי. כלומר, אם שינויים כלשהם לא תקינים, העדכון כולו לא יכשל, ואף אחד מהשינויים (שעשויים להיות תלויים בהם) לא ייושם.

השדה ModifyLabelsRequest מכיל מופע של LabelModification, שהוא שינוי בתווית בקובץ. הוא יכול גם להכיל מופע של FieldModification, שהוא שינוי בשדה של תווית. כדי לבטל את הערכים בשדה, צריך להגדיר את FieldModification.unsetValues ל-True.

אם הבדיקה הצליחה, גוף התגובה יכלול את התוויות שנוספו או עודכנו על ידי הבקשה. הן קיימות באובייקט modifiedLabels מסוג Label.

דוגמה

דוגמת הקוד הבאה מראה איך להשתמש ב-fieldId וב-labelId כדי לבטל את ההגדרה של ערכי השדות ב-fileId המשויך. לדוגמה, אם תווית מכילה גם שדות טקסט וגם שדות משתמש, ביטול ההגדרה של שדה הטקסט מסיר אותו מהתווית אבל משאיר את שדה המשתמש ללא שינוי. כשמסירים תווית, נמחקות גם שדות הטקסט וגם שדות המשתמש המשויכים לתווית. למידע נוסף קראו את המאמר הסרת תווית מקובץ.

Java

LabelFieldModification fieldModification =
  new LabelFieldModification().setFieldId("FIELD_ID").setUnsetValues(true);

ModifyLabelsRequest modifyLabelsRequest =
  new ModifyLabelsRequest()
      .setLabelModifications(
          ImmutableList.of(
              new LabelModification()
                .setLabelId("LABEL_ID")
                .setFieldModifications(ImmutableList.of(fieldModification))));

ModifyLabelsResponse modifyLabelsResponse = driveService.files().modifyLabels("FILE_ID", modifyLabelsRequest).execute();

Python

field_modification = {'fieldId':'FIELD_ID','unsetValues':True}
label_modification = {'labelId':'LABEL_ID', 'fieldModifications':[field_modification]}

modified_labels = drive_service.files().modifyLabels(fileId="FILE_ID", body = {'labelModifications' : [label_modification]}).execute();

Node.js

/**
* Unset a label with a field on a Drive file
* @return{obj} updated label data
**/
async function unsetLabelField() {
  // Get credentials and build service
  // TODO (developer) - Use appropriate auth mechanism for your app

  const {GoogleAuth} = require('google-auth-library');
  const {google} = require('googleapis');

  const auth = new GoogleAuth({scopes: 'https://www.googleapis.com/auth/drive'});
  const service = google.drive({version: 'v3', auth});
  const fieldModification = {
    'fieldId': 'FIELD_ID',
    'unsetValues': True,
  };
  const labelModification = {
    'labelId': 'LABEL_ID',
    'fieldModifications': [fieldModification],
  };
  const labelModificationRequest = {
    'labelModifications': [labelModification],
  };
  try {
    const updateResponse = await service.files.modifyLabels({
      fileId: 'FILE_ID',
      resource: labelModificationRequest,
    });
    return updateResponse;
  } catch (err) {
    // TODO (developer) - Handle error
    throw err;
  }
}

מחליפים את מה שכתוב בשדות הבאים:

  • FIELD_ID: ה-fieldId של השדה שיש לשנות. כדי לאתר את fieldId, מאחזרים את התווית באמצעות Google Drive Labels API.
  • LABEL_ID: ה-labelId של התווית שצריך לשנות.
  • FILE_ID: ה-fileId של הקובץ שעבורו שונו התוויות.