![見出し画像](https://assets.st-note.com/production/uploads/images/145281212/rectangle_large_type_2_b9c48eb0d96973bb14c3147bda830cf5.png?width=1200)
【GAS】GoogleAppsScript 100本ノック 31~40本目
初心者向けの、GASの学習教材が少ないため、作成しました。
全100問まで、投稿予定です。
GoogleAppsScriptは、Googleの各種ツールとの連携が魅力ですので、各種ツールとの連携を一通り学べるような内容にしています。
記事作成の励みになりますので、是非「スキ」をお願い致します。
▼ 第1回はコチラです。
31. フォームの送信結果取得
問題文:
指定したGoogle Formsの送信結果を取得し、シートに書き出すスクリプトを作成しなさい。
回答:
function getFormResponses() {
var formId = 'your-form-id'; // フォームのIDを指定してください
var form = FormApp.openById(formId);
var responses = form.getResponses();
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
sheet.clear(); // シートをクリア
// ヘッダー行を設定
var items = form.getItems();
var headers = items.map(function(item) {
return item.getTitle();
});
sheet.appendRow(headers);
// 各回答をシートに書き出し
responses.forEach(function(response) {
var row = response.getItemResponses().map(function(itemResponse){
return itemResponse.getResponse();
});
sheet.appendRow(row);
});
}
解説:
このスクリプトは、指定されたGoogle Formsの送信結果を取得し、アクティブなシートに書き出します。
form.getResponses()でフォームのすべての回答を取得し、各回答をresponse.getItemResponses()で取得してシートに書き出します。
32. フォームの質問追加
問題文:
既存のGoogle Formsに新しい質問「What is your favorite color?」を追加するスクリプトを作成しなさい。
回答:
function addFormQuestion() {
var formId = 'your-form-id'; // フォームのIDを指定してください
var form = FormApp.openById(formId);
form.addMultipleChoiceItem().setTitle('What is your favorite color?').setChoices([ form.createChoice('Red'), form.createChoice('Blue'), form.createChoice('Green') ]);
}
解説:
このスクリプトは、指定されたGoogle Formsに新しい質問「What is your favorite color?」を追加します。
form.addMultipleChoiceItem()で新しい複数選択式の質問を作成し、setTitleで質問のタイトルを設定し、setChoicesで選択肢を設定します。
33. フォームの質問削除
問題文:
既存のGoogle Formsから特定の質問(例: 「What is your favorite color?」)を削除するスクリプトを作成しなさい。
回答:
function deleteFormQuestion() {
var formId = 'your-form-id'; // フォームのIDを指定してください
var form = FormApp.openById(formId);
var items = form.getItems();
for (var i = 0; i < items.length; i++) {
if (items[i].getTitle() === 'What is your favorite color?') {
form.deleteItem(items[i]); break;
}
}
}
解説:
このスクリプトは、指定されたGoogle Formsから特定の質問「What is your favorite color?」を削除します。
form.getItems()でフォームのすべてのアイテムを取得し、タイトルが一致するアイテムをform.deleteItem(item)で削除します。
34. メールの送信
問題文: 特定のメールアドレスに「Hello, World!」という件名で「This is a test email.」という内容のメールを送信するスクリプトを作成しなさい。
回答:
function sendEmail() {
var recipient = 'recipient@example.com';
var subject = 'Hello, World!';
var body = 'This is a test email.';
MailApp.sendEmail(recipient, subject, body);
}
解説:
このスクリプトは、指定されたメールアドレスに「Hello, World!」という件名で「This is a test email.」という内容のメールを送信します。MailApp.sendEmail(recipient, subject, body)を使用してメールを送信します。
35. メールの添付ファイル付き送信
問題文:
特定のメールアドレスに「Hello, World!」という件名で「This is a test email.」という内容のメールを添付ファイル付きで送信するスクリプトを作成しなさい。
添付ファイルはGoogle Driveの指定ファイルを使用します。
回答:
function sendEmailWithAttachment() {
var recipient = 'recipient@example.com';
var subject = 'Hello, World!';
var body = 'This is a test email with an attachment.';
var file = DriveApp.getFileById('your-file-id');
MailApp.sendEmail({
to: recipient,
subject: subject,
body: body,
attachments: [file.getAs(MimeType.PDF)]
});
}
解説:
このスクリプトは、指定されたメールアドレスに「Hello, World!」という件名で「This is a test email with an attachment.」という内容のメールをGoogle Driveのファイルを添付して送信します。
MailApp.sendEmailメソッドのオプションでattachmentsを指定して添付ファイルを追加します。
36. メールの受信
問題文:
Gmailアカウントの受信トレイから最新のメールの件名を取得してログに表示するスクリプトを作成しなさい。
回答:
function getLatestEmailSubject() {
var threads = GmailApp.getInboxThreads(0, 1);
if (threads.length > 0) {
var message = threads[0].getMessages()[0];
Logger.log('Latest email subject: ' + message.getSubject());
}
}
解説:
このスクリプトは、Gmailアカウントの受信トレイから最新のメールの件名を取得してログに表示します。
GmailApp.getInboxThreads(0, 1)で最新のスレッドを取得し、threads[0].getMessages()[0].getSubject()で件名を取得します。
37. メールのフィルタリング
問題文:
Gmailアカウントの受信トレイから特定の件名(例: 「Important」)を含むメールをすべて取得し、それらの件名をログに表示するスクリプトを作成しなさい。
回答:
function getFilteredEmails() {
var threads = GmailApp.search('subject:Important');
for (var i = 0; i < threads.length; i++) {
var messages = threads[i].getMessages();
for (var j = 0; j < messages.length; j++) {
Logger.log('Email subject: ' + messages[j].getSubject());
}
}
}
解説:
このスクリプトは、Gmailアカウントの受信トレイから特定の件名を含むメールをすべて取得し、それらの件名をログに表示します。GmailApp.search('subject:Important')で件名に「Important」を含むスレッドを検索し、各メールの件名をmessages[j].getSubject()で取得してログに表示します。
38. メールの自動返信設定
問題文:
特定の件名(例: 「Support」)を含むメールに対して自動返信を行うスクリプトを作成しなさい。
返信内容は「Thank you for contacting support.」とします。
回答:
function autoReply() {
var threads = GmailApp.search('subject:Support');
for (var i = 0; i < threads.length; i++) {
var messages = threads[i].getMessages();
for (var j = 0; j < messages.length; j++) {
var message = messages[j];
if (!message.isReplied()) {
message.reply('Thank you for contacting support.');
}
}
}
}
解説:
このスクリプトは、特定の件名を含むメールに対して自動返信を行います。
GmailApp.search('subject:Support')で件名に「Support」を含むスレッドを検索し、message.reply('Thank you for contacting support.')で自動返信を行います。
message.isReplied()を使用して、すでに返信済みのメールに対しては再度返信しないようにします。
39. Googleドライブにファイル作成
問題文:
Google Driveに新しいテキストファイルを作成し、「Hello, World!」という内容を書き込むスクリプトを作成しなさい。
回答:
function createTextFile() {
var fileName = 'HelloWorld.txt';
var content = 'Hello, World!';
DriveApp.createFile(fileName, content, MimeType.PLAIN_TEXT);
}
解説:
このスクリプトは、Google Driveに新しいテキストファイルを作成し、その内容に「Hello, World!」を書き込みます。
DriveApp.createFile(fileName, content, MimeType.PLAIN_TEXT)を使用して、指定されたファイル名と内容でテキストファイルを作成します。
40. Googleドライブのファイル削除
問題文:
Google Driveの指定されたファイルを削除するスクリプトを作成しなさい。
回答:
function deleteFile() {
var fileId = 'your-file-id'; // 削除したいファイルのIDを指定してください
var file = DriveApp.getFileById(fileId);
file.setTrashed(true);
}
解説:
このスクリプトは、Google Driveから指定されたファイルを削除します。DriveApp.getFileById(fileId)でファイルを取得し、file.setTrashed(true)でファイルをゴミ箱に移動します。
これにより、ファイルはDriveのゴミ箱に移動され、完全に削除されるまでの間、復元可能な状態に保たれます。
この記事が気に入ったらサポートをしてみませんか?