Google Docs to Forms - Formswrite.com logo
BlogPricing

Bulk Convert Google Docs to LMS Quizzes: Moodle, Canvas, Blackboard, and More

Formswrite Team

February 15, 2026

Bulk Convert Google Docs to LMS Quizzes: Moodle, Canvas, Blackboard, and More

Bulk Convert Google Docs to LMS Quizzes: Moodle, Canvas, Blackboard, and More

At the start of every semester, educators and LMS administrators face the same problem: dozens (or hundreds) of quiz documents need to be entered into the learning management system. Manually typing questions into Moodle, Canvas, or Blackboard one by one is a massive time drain.
With the Formswrite API, you can batch-convert all your Google Docs into LMS-ready files in minutes instead of hours.

The Problem

A typical university department might have:
  • 30 courses × 4 quizzes each = 120 quiz documents per semester
  • Each quiz has 20-50 questions
  • Manual entry takes 30-60 minutes per quiz
  • Total time: 60-120 hours of data entry
With the Formswrite API, the same 120 quizzes convert in under 2 hours — mostly unattended.

Batch Conversion Script

Here's a complete Python script that converts an entire folder of Google Docs to LMS quiz files:
pythonimport requests
import os
import time

API_TOKEN = "your_formswrite_api_token"
OUTPUT_DIR = "./quiz_exports"
FORMAT = "moodle"  # Change to: canvas, blackboard, brightspace, etc.

# List of Google Doc IDs and names
documents = [
    {"id": "doc_id_1", "name": "Biology 101 - Quiz 1"},
    {"id": "doc_id_2", "name": "Biology 101 - Quiz 2"},
    {"id": "doc_id_3", "name": "Biology 101 - Midterm"},
    {"id": "doc_id_4", "name": "Chemistry 201 - Quiz 1"},
    {"id": "doc_id_5", "name": "Chemistry 201 - Quiz 2"},
    # Add as many as you need
]

os.makedirs(OUTPUT_DIR, exist_ok=True)

for i, doc in enumerate(documents):
    print(f"[{i+1}/{len(documents)}] Converting: {doc['name']}")

    response = requests.post(
        "https://api.formswrite.com/api/v1/convert",
        headers={
            "Authorization": f"Bearer {API_TOKEN}",
            "Content-Type": "application/json"
        },
        json={
            "documentId": doc["id"],
            "format": FORMAT,
            "documentName": doc["name"]
        }
    )

    result = response.json()

    if result.get("success"):
        # Download the file
        file_response = requests.get(result["downloadUrl"])
        file_path = os.path.join(OUTPUT_DIR, result["fileName"])
        with open(file_path, "wb") as f:
            f.write(file_response.content)
        print(f"  Saved: {result['fileName']}")
    else:
        print(f"  Error: {result.get('message', 'Unknown error')}")

    # Small delay between requests
    time.sleep(2)

print(f"\nDone! {len(documents)} quizzes exported to {OUTPUT_DIR}/")

Multi-Format Export

Convert the same documents to multiple LMS formats simultaneously:
pythonFORMATS = ["moodle", "canvas", "blackboard", "gift"]

for doc in documents:
    for fmt in FORMATS:
        response = requests.post(
            "https://api.formswrite.com/api/v1/convert",
            headers={
                "Authorization": f"Bearer {API_TOKEN}",
                "Content-Type": "application/json"
            },
            json={
                "documentId": doc["id"],
                "format": fmt,
                "documentName": doc["name"]
            }
        )
        result = response.json()
        if result.get("success"):
            file_response = requests.get(result["downloadUrl"])
            with open(f"{OUTPUT_DIR}/{fmt}/{result['fileName']}", "wb") as f:
                f.write(file_response.content)
This generates quiz files for every LMS your institution uses from a single set of source documents.

Supported LMS Platforms

LMSFormat ValueFile TypeImport Method
Moodlemoodle.xmlQuestion Bank → Import
Canvascanvas.zipSettings → Import Course Content
Blackboardblackboard.txtCourse Tools → Tests → Import
Brightspace (D2L)brightspace.zipQuestion Library → Import
Schoologyschoology.zipResources → Import
Sakaisakai.zipTests & Quizzes → Import
Additional formats for game-based platforms: Kahoot, Quizizz, Blooket, Gimkit, Socrative, Wooclap, and more.

Node.js Batch Script

javascriptconst fs = require('fs');
const path = require('path');

const API_TOKEN = process.env.FORMSWRITE_TOKEN;
const OUTPUT_DIR = './quiz_exports';

const documents = [
  { id: 'doc_id_1', name: 'Biology 101 - Quiz 1' },
  { id: 'doc_id_2', name: 'Biology 101 - Quiz 2' },
  { id: 'doc_id_3', name: 'Chemistry 201 - Quiz 1' },
];

async function convertAll(format) {
  fs.mkdirSync(OUTPUT_DIR, { recursive: true });

  for (const doc of documents) {
    console.log(`Converting: ${doc.name}`);

    const response = await fetch('https://api.formswrite.com/api/v1/convert', {
      method: 'POST',
      headers: {
        'Authorization': `Bearer ${API_TOKEN}`,
        'Content-Type': 'application/json'
      },
      body: JSON.stringify({
        documentId: doc.id,
        format,
        documentName: doc.name
      })
    });

    const result = await response.json();

    if (result.success) {
      const fileResponse = await fetch(result.downloadUrl);
      const buffer = await fileResponse.arrayBuffer();
      const filePath = path.join(OUTPUT_DIR, result.fileName);
      fs.writeFileSync(filePath, Buffer.from(buffer));
      console.log(`  Saved: ${result.fileName}`);
    }

    await new Promise(r => setTimeout(r, 2000));
  }
}

convertAll('moodle');

Use Cases

  • University IT — batch-import exams for all departments at the start of each semester
  • School districts — standardize assessments across schools using a single source format
  • Training companies — deliver the same content to clients using different LMS platforms
  • Instructional designers — maintain quizzes in Google Docs and export to any LMS on demand
  • Migration projects — moving from one LMS to another (e.g., Blackboard to Canvas)

FAQ

How many documents can I convert in one batch?

There is no hard limit on the number of documents. Your subscription plan determines your total conversion credits.

Can I automate this to run on a schedule?

Yes. Use a cron job, GitHub Actions, or an automation platform like Zapier or Make to run the batch script periodically.

Do I need to share my Google Docs with Formswrite?

Your Google Docs are accessed through your Formswrite account's Google connection. Documents must be accessible to the Google account linked to your Formswrite account.

Can I convert Word documents or PDFs?

The API currently accepts Google Docs as input. You can upload Word documents or PDFs to Google Drive, convert them to Google Docs format, and then use the API.

Get Started

Stop spending hours on manual quiz entry. Sign up for Formswrite and batch-convert your Google Docs to LMS quizzes with the API.

Share this post with your network


Formswrite - Google Docs to Forms Converter

Create forms in seconds, not hours

Convert Google Docs to Forms with one click

Save hours on quiz creation every month.

No more manual form creation. No more formatting hassles.

We care about your data in our privacy policy

© 2026 Formswrite. All Rights Reserved.