見出し画像

【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のゴミ箱に移動され、完全に削除されるまでの間、復元可能な状態に保たれます。

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