スキルアップを始める!

【GAS】A列のフォルダに対してD列のメールアドレスに共有権限を設定する

GAS(GoogleAppsScript)
GAS(GoogleAppsScript)
この記事は約4分で読めます。

※記事中に広告情報を含みます。

スキルを手に入れた時、人は強くなれる。
Youtubeでスキルアップを始める 電子書籍でスキルアップを始める
\ワードプレスのスキルアップはこちら!/ WordPress入門読本

GASを使用して、A列のフォルダに対してD列のメールアドレスに共有権限を設定するスクリプト例を作成します。

以下のような流れでで、指定されたフォルダに対して対応するメールアドレスに共有権限を付与することができます。

指定されたフォルダに対して対応するメールアドレスに共有権限を付与する

指定されたフォルダに対して対応するメールアドレスに共有権限を付与することができます。

function shareFoldersWithEmails() {
const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
const data = sheet.getRange("A1:D" + sheet.getLastRow()).getValues();

data.forEach(row => {
const folderName = row[0];
const email = row[3];

// フォルダを検索
const folders = DriveApp.getFoldersByName(folderName);

if (folders.hasNext()) {
const folder = folders.next();

// フォルダに編集権限を付与
folder.addEditor(email);

Logger.log(`フォルダ "${folderName}" を ${email} と共有しました。`);
} else {
Logger.log(`フォルダ "${folderName}" が見つかりませんでした。`);
}
});
}
Screenshot
Screenshot

これで、スプレッドシート上のA列のフォルダに対して、D列のメールアドレスのユーザーに一括で権限を付与することができます。

スクリプトの動作の流れ

このスクリプトの動作は以下の通りです。

  1. アクティブなシートから、A1:D列のデータを取得します。
  2. 取得したデータの各行に対して以下の処理を行います。
    • A列からフォルダ名を取得します。
    • D列からメールアドレスを取得します。
  3. DriveApp.getFoldersByName()を使用して、指定された名前のフォルダを検索します。
  4. フォルダが見つかった場合:
    • addEditor()メソッドを使用して、指定されたメールアドレスにフォルダの編集権限を付与します。
    • 処理結果をログに記録します。
  5. フォルダが見つからなかった場合:
    • その旨をログに記録します。

コードの解説

const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
const data = sheet.getRange("A1:D" + sheet.getLastRow()).getValues();

これらの行で、現在のシートを取得し、A1からD列の最後までのデータを2次元配列として取得します。

data.forEach(row => {
const folderName = row[0];
const email = row[3];

各行のデータを処理し、フォルダ名(1列目)とメールアドレス(4列目)を取得します。

const folders = DriveApp.getFoldersByName(folderName);
if (folders.hasNext()) {
const folder = folders.next();

指定された名前のフォルダをGoogle Drive内で検索し、見つかった場合は最初のフォルダを取得します。

folder.addEditor(email);

フォルダが見つかった場合、指定されたメールアドレスのユーザーにそのフォルダの編集権限を付与します。

javascriptLogger.log(`フォルダ "${folderName}" を ${email} と共有しました。`);

処理が成功した場合、ログにメッセージを記録します。

} else {
Logger.log(`フォルダ "${folderName}" が見つかりませんでした。`);
}

フォルダが見つからなかった場合、その旨をログに記録します。

注意点

注意点:

  1. このスクリプトを実行する前に、必要な権限(ドライブへのアクセスなど)を付与する必要があります。
  2. 大量のフォルダに対して処理を行う場合、Googleの制限に注意してください。必要に応じて、処理を分割するなどの対策が必要になる場合があります。
  3. フォルダ名が重複している場合、最初に見つかったフォルダに対してのみ処理が行われます。
  4. デフォルトでは編集権限を付与していますが、必要に応じてaddEditor()addViewer()に変更することで、閲覧権限のみを付与することもできます。
  5. 実行前に、テスト用の少数のデータで動作確認を行うことをおすすめします。

まとめ

このスクリプトを使用することで、指定されたフォルダに対して対応するメールアドレスに共有権限を効率的に設定することができます。

URLをコピーしました!