2

Google スプレッドシートについての質問です。複数のユーザーと共有するスプレッドシートがあります。スクリプトを使用して、シートの内容も更新しています。私の質問は、スクリプトを実行するときです。シートを他の人が編集できないように保護する方法はありますか。スクリプトが完了したら、編集権限を再びユーザーに付与できますか?

4

1 に答える 1

0

私はあなたがまだ他の人を持っていないのを見て、私は成功せずにこの問題をいじくり回したので、返信しているだけです. 私の場合、ユーザーがメニュー駆動型スクリプトを実行するときにコードを実行する必要があるという点で、目的は多少異なりました。自分で保護を変更するだけでよいので、これでうまくいくかもしれません。

いずれにせよ、コードを実行するときにユーザーが編集の途中である可能性がある状況を予見できます。あなたがしたいと思うかもしれないことは、それらを管理するためにユーザーオブジェクトと関連するメソッドを理解することです。今のところ、それらを追い出さずにそれを行う方法はわかりませんが(同じ結果)、他の誰かがいくつかの考えを持っているかもしれません. 次のスプレッドシート クラスを参照してください。

  • 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;
}
于 2013-06-17T18:38:24.560 に答える