Skip to content

Instantly share code, notes, and snippets.

@Tomokatsu-Sakamoto
Last active February 7, 2023 13:15
Show Gist options
  • Save Tomokatsu-Sakamoto/ae45c52f97b202b09a1a9f826f319e9a to your computer and use it in GitHub Desktop.
Save Tomokatsu-Sakamoto/ae45c52f97b202b09a1a9f826f319e9a to your computer and use it in GitHub Desktop.
"use strict"; // 変数の宣言を強要する
/**
* フォームで回答されたときに呼び出されるトリガー関数
* https://developers.google.com/apps-script/guides/triggers/events#google_forms_events
*/
function onFormSubmit(e) {
const form = FormApp.getActiveForm();
const itemResponses = e.response.getItemResponses();
const eMail = e.response.getRespondentEmail(); // 回答者のメールアドレスを取得
console.log('eMail : ' + eMail);
for (let i = 0; i < itemResponses.length; i++) { // 質問の数だけくり返し処理する
let itemResponse = itemResponses[i];
Logger.log('Response to the question "%s" (%s) was "%s"',
itemResponse.getItem().getTitle(),
itemResponse.getItem().getType(),
itemResponse.getResponse());
// どの回答が「ファイルアップロード」なのかがわからないので、一つずつ確認する
if (itemResponse.getItem().getType() == 'FILE_UPLOAD') {
// 回答の種類が「ファイルアップロード」 'FILE_UPLOAD' であれば処理する
const fileID = itemResponse.getResponse(); // 回答に格納されているのが、アップロードされた画像ファイルの ID
const image = Drive.Files.copy( // 画像ファイルを OCR 機能でテキスト化
{ title: "tmp" },
fileID,
{ "ocr": true, "ocrLanguage": "ja" }
);
const document = DocumentApp.openById(image.id);
document.setName(e.response.getTimestamp()); // ファイル名を日付にしておく
const text = document.getBody().getText();
console.log(text);
Drive.Files.remove(image.id); // 作業ファイルを削除
// テキスト化した内容をメールで返送する
const Draft = GmailApp.createDraft(
eMail,
'アップロードされた画像ファイルに含まれているテキストは…',
`-----\n${text}\n-----\nResponded via Google Forms ${e.response.getTimestamp()}`,
{ name: 'Automatic Emailer Script', bcc: Session.getActiveUser().getUserLoginId() });
Draft.send();
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment