見出し画像

【GAS】GoogleAppsScript 100本ノック 21~30本目

GAS初学者に向けて、100本ノックを作成しました。

Youtubeやブログなどで、GASのエディターの基本的な使いたかたや、変数、四則演算、Hello World!!の出力までを解説した記事は複数ありますが、それ以降のステップを解説したメディアが見当たらず、自分自身が学習していた時、GASを使ってどんな事が出来るのかを全体像を知りたいと思っていました。

GoogleAppsScriptは、Googleの各種ツールとの連携が魅力ですので、各種ツールとの連携を一通り学べるような内容にしています。

▼ 第1回はコチラです。


21. スプレッドシートの共有設定変更

問題文:
Google Sheetsの共有設定を変更して、特定のユーザーに編集権限を与えるスクリプトを作成しなさい。

回答:

function changeShareSettings() {
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var emailAddress = 'user@example.com'; var permission = SpreadsheetApp.Access.EDIT;
spreadsheet.addEditor(emailAddress);
}

解説:
このスクリプトは、特定のユーザー(user@example.com)にスプレッドシートの編集権限を与えます。
spreadsheet.addEditor(emailAddress)で指定されたユーザーに編集権限を付与します。


22. スプレッドシートのダウンロード

問題文
:
Google SheetsをPDF形式でダウンロードするスクリプトを作成しなさい。

回答:

function downloadSpreadsheetAsPDF() {
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var url = 'https://docs.google.com/spreadsheets/d/' + spreadsheet.getId() + '/export?format=pdf';
var options = {
 headers: { 'Authorization': 'Bearer ' + ScriptApp.getOAuthToken() }
 };
var response = UrlFetchApp.fetch(url, options);
var blob = response.getBlob().setName(spreadsheet.getName() + '.pdf');
DriveApp.createFile(blob);
}

解説:
このスクリプトは、Google SheetsをPDF形式でダウンロードし、Google Driveに保存します。UrlFetchApp.fetch(url, options)を使用してスプレッドシートをPDF形式で取得し、DriveApp.createFile(blob)でGoogle Driveにファイルを作成します。


23. スプレッドシートのインポート

問題文:
Google Driveからスプレッドシートをインポートし、アクティブなスプレッドシートにデータをコピーするスクリプトを作成しなさい。

回答:

function importSpreadsheet() {
var fileId = 'your-file-id';
var importedSpreadsheet = SpreadsheetApp.openById(fileId);
var sourceSheet = importedSpreadsheet.getSheets()[0];
var targetSheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var range = sourceSheet.getDataRange();
var values = range.getValues();
targetSheet.getRange(1, 1, values.length, values[0].length).setValues(values);
}

解説:
このスクリプトは、Google Driveから指定されたスプレッドシート(your-file-id)をインポートし、そのデータをアクティブなスプレッドシートにコピーします。
SpreadsheetApp.openById(fileId)で指定されたスプレッドシートを開き、sourceSheet.getDataRange().getValues()でデータを取得し、targetSheet.getRange(...).setValues(values)でアクティブシートにデータを設定します。


24. スプレッドシートのバージョン管理

問題文:
Google Sheetsのバージョンを管理し、現在のバージョンをログに表示するスクリプトを作成しなさい。

回答:

function logSpreadsheetVersion() {
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var revisions = DriveApp.getFileById(spreadsheet.getId()).getRevisions();
for (var i = 0; i < revisions.length; i++) {
 Logger.log('Version ' + (i + 1) + ': ' + revisions[i].getLastModifyingUser().getEmail() + ' on ' + revisions[i].getLastModifiedDate());
 }
}

解説:
このスクリプトは、スプレッドシートのバージョン履歴を取得し、各バージョンの変更者と変更日時をログに表示します。DriveApp.getFileById(spreadsheet.getId()).getRevisions()でスプレッドシートのリビジョン履歴を取得し、各リビジョンの情報をLogger.logで表示します。


25. スプレッドシートの変更履歴取得

問題文:
Google Sheetsの変更履歴を取得し、ログに表示するスクリプトを作成しなさい。

回答:

function logChangeHistory() {
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var revisions = DriveApp.getFileById(spreadsheet.getId()).getRevisions();
for (var i = 0; i < revisions.length; i++) {
 Logger.log('Revision ' + (i + 1) + ': ' + revisions[i].getLastModifyingUser().getEmail() + ' on ' + revisions[i].getLastModifiedDate());
 }
}

解説:
このスクリプトは、スプレッドシートの変更履歴を取得し、各リビジョンの変更者と変更日時をログに表示します。DriveApp.getFileById(spreadsheet.getId()).getRevisions()でスプレッドシートのリビジョン履歴を取得し、各リビジョンの情報をLogger.logで表示します。


ここから先は

2,391字

¥ 300

この記事が気に入ったらサポートをしてみませんか?