Учетная запись службы googleapis создает новую электронную таблицу и предоставляет разрешения пользователю - PullRequest
0 голосов
/ 03 декабря 2018

Мне удалось создать лист Google, используя учетную запись службы, но я не смог вставить разрешения на лист для пользователей:

function createSheet(jwt, apiKey) {
  const sheets = google.sheets({version: 'v4'});
  var request = {
    resource: {
      "properties": {
        "title": "testSheet"
      }
    },
    auth: jwt 
  };

Ниже приведен ответ от API создания листа:

config: {transformRequest: {…}, transformResponse: {…}, timeout: 0, xsrfCookieName: "XSRF-TOKEN", xsrfHeaderName: "X-XSRF-TOKEN", …}
data: {spreadsheetId: "XXX", properties: {…}, sheets: Array(1), spreadsheetUrl: "https://docs.google.com/spreadsheets/d/XXX/edit"}
...
status: 200
statusText: "OK"

Мой код.

function insertPermission(fileId) {
  var body = {
    'value': 'xxx@gmail.com',
    'type': 'user',
    'role': 'owner'
  };
  var drive=google.drive({version: 'v3'});
   drive.permissions.create({
    'fileId': fileId,  //sheetID returned from create sheet response
    'resource': body
  }, function(err, response) {if (err) {
    console.error(err);
    return;
    } else{
      console.log(JSON.parse(JSON.stringify(response))) ;
    }
  });

Ошибка от insertPermission:

index.js: 114 Ошибка: недостаточно прав при createError

поочередно, естьЕсть ли способ указать права доступа к файлам в Sheets.create API?

Ответы [ 2 ]

0 голосов
/ 10 декабря 2018

Кроме того, на gdrive есть настройка для создания папки и предоставления разрешения учетной записи службы для папки для чтения / записи.MyDrive доступен по идентификатору пользователя, а не по служебной учетной записи.Проблема решена сейчас.

0 голосов
/ 03 декабря 2018

Недостаточно прав доступа при createError

Обычно означает, что пользователь, вошедший в систему, не имеет разрешения на то, что он пытается сделать.

  1. Вы уверены, что это учетная запись службы, которая выполняет эту вставку, поскольку она владеет файлом, только он может передать право собственности.
  2. Как вы вошли в систему как учетная запись службы, у вас есть что-то вроде областей, у вас есть одна издобавлены области записи.

, если вы отметите Transferring_ownership

var fileId = '1sTWaJ_j7PkjzaBWtNc3IzovK5hQf21FbOw9yLeeLPNQ';
var permissions = [
  {
    'type': 'user',
    'role': 'writer',
    'emailAddress': 'user@example.com'
  }, {
    'type': 'domain',
    'role': 'writer',
    'domain': 'example.com'
  }
];
// Using the NPM module 'async'
async.eachSeries(permissions, function (permission, permissionCallback) {
  drive.permissions.create({
    resource: permission,
    fileId: fileId,
    fields: 'id',
  }, function (err, res) {
    if (err) {
      // Handle error...
      console.error(err);
      permissionCallback(err);
    } else {
      console.log('Permission ID: ', res.id)
      permissionCallback();
    }
  });
}, function (err) {
  if (err) {
    // Handle error
    console.error(err);
  } else {
    // All permissions inserted
  }
});
...