[Organizational AI Utilization #221] GAS to automatically copy Google Meet recordings, transcripts, and summaries to a shared drive
Hello! This is Terada.
Currently, I serve as the Representative Director of the AI Digital Community (ADC), a community for AI practitioners such as AI promoters at digital-related companies, as well as the Representative Director of FURIKAKE Partners Inc., which supports the "xAI" transformation of client businesses and AI Portalize Inc., which provides products that support organizational AI utilization, supporting organizational AI utilization from various perspectives!
When you record a Google Meet, the "video recording file," "transcript," and "notes/summary" are automatically saved to the My Drive of the person who performed the recording (the organizer or co-organizer). While this is a convenient feature, because the save destination is an individual's My Drive, it is not visible to the team as-is, and there is a risk that access will be lost due to resignation or transfer.
In this article, I will explain the Google Apps Script (GAS) that automatically copies these files to a shared drive, covering everything from the setup procedure to the full code.
Also, try using the copied files to automate summaries, assignments, and deadlines using Google Workspace Studio, which I wrote about in a previous article.
Overview of the mechanism
First, let's organize the prerequisites.
When you record a Meet, the recording, transcript, and notes (summary) are automatically saved in the "Meet Recordings" folder within the My Drive of the organizer or co-organizer who started the recording.
The recording is saved as an MP4 file, and the transcript and notes are saved as Google Docs, with the meeting name and date/time included in the file name.
The GAS we are creating this time is a simple one that "periodically checks the Meet Recordings folder and copies files that have not yet been copied to a specified folder in the shared drive." It will be executed automatically using a time-driven trigger.
Note that the transcript and notes are generated if their respective features are turned on during the meeting. Depending on your organization's management settings, these features may be disabled, so if you have never used them before, it is a good idea to record manually once to confirm that the files are saved to your My Drive.
Preparation: Get the ID of the destination folder
1. Create a destination folder (e.g., "Meet Recording Archive") within the shared drive.
2. Open that folder in your browser and check the end of the URL. The string following "https://drive.google.com/drive/folders/" is the folder ID. Make a note of this.
3. Please ensure that the person executing the script has "Contributor" access or higher to that shared drive. If you do not have permission to add files, the copy will fail.
Creating the GAS project
1. Open script.google.com in your browser and click "New Project".

2. Change the project name to something easy to understand, such as "Copy Meet Recordings to Shared Drive".
3. Delete all the code initially in the editor and paste the following code.
Full code
Paste the following as is, and replace only the folder ID on the first line with your own environment's ID.
// ======== 設定(ここだけ書き換える) ========
const SHARED_FOLDER_ID = 'ここに共有ドライブ側のフォルダIDを貼り付け';
const SOURCE_FOLDER_NAME = 'Meet Recordings';
// メイン関数:Meet Recordings内のファイルを共有ドライブへコピー
function copyMeetFilesToSharedDrive() {
const folders = DriveApp.getFoldersByName(SOURCE_FOLDER_NAME);
if (!folders.hasNext()) {
console.log('「' + SOURCE_FOLDER_NAME + '」フォルダが見つかりません。まだ録画が保存されていない可能性があります。');
return;
}
const sourceFolder = folders.next();
const targetFolder = DriveApp.getFolderById(SHARED_FOLDER_ID);
const files = sourceFolder.getFiles();
let copiedCount = 0;
while (files.hasNext()) {
const file = files.next();
// コピー先に同名ファイルがあればコピー済みとみなしてスキップ
if (isAlreadyCopied(targetFolder, file.getName())) {
continue;
}
file.makeCopy(file.getName(), targetFolder);
copiedCount++;
console.log('コピーしました: ' + file.getName());
}
console.log('処理完了。今回コピーしたファイルは ' + copiedCount + ' 件です。');
}
// コピー済み判定:コピー先フォルダに同名ファイルが存在するか
function isAlreadyCopied(folder, fileName) {
return folder.getFilesByName(fileName).hasNext();
}Here are some supplementary points about the code.
Duplicate prevention is determined by checking if a file with the same name already exists in the destination. Since Meet filenames include the meeting name and date/time, this method is sufficient for practical use and is more robust because it doesn't require maintaining separate management data for records.
Copying video files is handled on the Google Drive server side, so there is no waiting time for downloading or uploading, even for large file sizes.
Initial execution and permission authorization
1. Select 'copyMeetFilesToSharedDrive' from the function dropdown at the top of the editor and click 'Run'.

2. The first time you run it, an 'Authorization required' message will appear. Select your account and grant permission. If you see 'This app isn't verified by Google,' click 'Advanced' and then 'Go to (project name) (unsafe)' to proceed (this is fine since it is a script you created yourself).

3. After execution, if 'Copied: ~' appears in the execution log at the bottom and the file appears in the shared drive, it is a success.
Automating with trigger settings
Once you have confirmed it works with manual execution, set up periodic execution.
1. Open 'Triggers' from the clock icon in the menu on the left side of the screen.

2. Click 'Add Trigger' at the bottom right.
3. Select 'copyMeetFilesToSharedDrive' for the function to run, 'Time-driven' for the event source, and 'Hour timer' for the time-based trigger, then save.
This completes the setup where, once a recording is saved to My Drive after a meeting, it will be automatically copied to the shared drive within a maximum of one hour. If your meeting frequency is low, 'Once a day (late night)' is also sufficient.
Customization example: Organizing into monthly folders
If you want to organize the destination into monthly subfolders like '2026-07', add the following function.
// 月別サブフォルダ(なければ作成)を返す
function getMonthlyFolder(parent, date) {
const name = Utilities.formatDate(date, 'Asia/Tokyo', 'yyyy-MM');
const it = parent.getFoldersByName(name);
return it.hasNext() ? it.next() : parent.createFolder(name);
}If you rewrite the copy process in the main function to something like file.makeCopy(file.getName(), getMonthlyFolder(targetFolder, file.getDateCreated())), files will be automatically organized by the month they were created (please also adjust the duplicate check to apply to the monthly folder).
In addition, extensions such as "only copy files that include a specific meeting name in the filename" or "notify Slack or chat after copying" can be added on top of the same structure.
Points to note
This script can only target the "My Drive of the person who executed it." If there are multiple organizers recording, each account will need to have the same script set up.
Since this is a copy, the original file remains in My Drive. If you are concerned about the storage capacity of your personal drive, decide on a policy for organizing old files after confirming they have been reflected in the Shared Drive.
Recording data contains the actual content of the meeting discussions. Please be sure to check that the membership scope of the destination Shared Drive is appropriate (i.e., that no unauthorized individuals have access).
The folder name "Meet Recordings" may vary depending on your environment. Please check the actual folder name in your My Drive and match it with SOURCE_FOLDER_NAME on the second line of the code.
So you don't have to copy and paste transcripts from files every time
The biggest weakness of Meet recordings, transcripts, and summaries is that they get "buried in individual My Drives." With just a few dozen lines of GAS and an hourly trigger, you can create a system where meeting assets are automatically gathered in a team Shared Drive. This serves as a foundation for preventing missed meeting minutes, improving searchability for past meetings, and even utilizing them with tools like NotebookLM, so please try setting it up.
I hope you will try running it manually once to start with!
Thank you for reading!
Click here for past AI-related articles!
By the way, I have also published a book summarizing AI promotion within organizations. Please take a look if you are interested.
<Self-introduction>
Until recently, at CARTA HOLDINGS, which consists of about 1,400 people and over 20 operating companies belonging to the Dentsu Group, I was responsible for promoting AI utilization across the entire organization in the company-wide AI Promotion Office. I also served as the Representative Director of D-Marketing Academy, a corporate "Generative AI & Digital Marketing Talent" training service, and have supported AI talent development for hundreds of companies, from large corporations to startups.
Currently, I serve as the Representative Director of AI Digital Community (ADC), a community for AI promotion and professionals in digital-related companies", as well as Representative Director of FURIKAKE Partners Inc., which supports the "xAI transformation" of client businesses, and AI Portalize Inc., which provides products to support organizational AI utilization. I support organizational AI utilization from various aspects!
<Brief History>
May 2005: Started EC business while in university
May 2007: Joined CyberAgent, Inc. and was involved in launching new businesses
October 2011: Established Flessel, Inc. at VOYAGE GROUP, Inc. to conduct a joint business with KDDI, and assumed the position of Representative Director
November 2015: Assumed the position of Representative Director of JS Consulting, Inc., which conducts EC consulting business
April 2018: M&A of JS Consulting by Hamee Corp., a Tokyo Stock Exchange Prime listed company, and continued as Representative Director
May 2019: Appointed as Executive Officer of Hamee Corp., overseeing the new business domain of the Hamee Group
February 2021: Appointed as Advisor to THE CHOSEN ONE, Inc., which provides D2C support
March 2021: Appointed as Director of NAAFY, Inc., which conducts apparel D2C business
April 2021: Established D-Marketing Academy, Inc. and assumed the position of Representative Director
January 2023: M&A of D-Marketing Academy by CARTA HOLDINGS, Inc., and continued as Representative Director
March 2025: Began concurrently serving in the AI Promotion Office, which promotes AI utilization across the entire CARTA HOLDINGS group
January 2026: Established FURIKAKE Partners, Inc., which provides advisory services regarding generative AI, and assumed the position of Representative Director
January 2026: Established AI Portalize, Inc., a generative AI platform service for organizations, and assumed the position of Representative Director
January 2026: Established the digital-related AI utilization corporate community "AI Digital Community (ADC)" and assumed the position of Representative Director
