2013-05-20 2 views
1

Этот вопрос касается электронной таблицы Google. У меня есть таблица, которая делится с несколькими людьми. Я использую скрипт для обновления содержимого листа в качестве колодца. Вопрос в том, когда я запускаю скрипт, есть ли способ защитить лист от других, чтобы отредактировать его. И когда скрипт сделан, разрешение на редактирование может быть снова предоставлено пользователям?Как установить защиту листа во время выполнения сценария google

ответ

0

Я отвечаю только потому, что вижу, что у вас еще не было других, и я без проблем справился с этой проблемой. Хотя в моем случае цель была несколько иной в том, что мне нужен мой код для выполнения пользователями, когда они запускали сценарии, управляемые меню. Поскольку вам нужно только самостоятельно изменить защиту, вы можете обнаружить, что это работает для вас.

В любом случае, я могу предвидеть ситуацию, когда пользователи могут быть mid-edit при запуске вашего кода, что может оказаться для них разочарованием! То, что вы можете сделать, - это получить доступ к объекту User и связанным с ним методам, чтобы управлять ими. Прямо сейчас я не вижу, как вы это сделаете, не выталкивая их (тот же результат), но, возможно, кто-то еще услышит какие-то мысли. Взгляните на классе Spreadsheet для следующих целей:

  • getEditors/removeEditor/addEditor
  • getViewers/addViewers

https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet

Ниже приводится функция, которую я сделал, который работал для меня (владелец), но не для пользователей - надеемся, что это поможет:

//Target = string name of sheet to change permissions for 
//ProtectOn = boolean: TRUE = turn on protection 
//function returns boolean representing previous permissions setting (for loops/verification) 

function SheetProtectionSet(Target, ProtectOn) { 
    var g_wkbActive = SpreadsheetApp.getActiveSpreadsheet(); 
    var wksTarget = g_wkbActive.getSheetByName(Target); 
    var permissions = wksTarget.getSheetProtection(); 
    var cur_protection = permissions.isProtected(); 

    permissions.setProtected(ProtectOn); 
    wksTarget.setSheetProtection(permissions); 
    return cur_protection; 
} 
+1

Да, это действительно работает для моей потребности. Спасибо чувак! – swimmingwood

+0

Отлично! рад, что это сработало для вас :) – Tim

Смежные вопросы