40 строки
		
	
	
		
			858 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			40 строки
		
	
	
		
			858 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| import fs from "fs";
 | |
| import archieml from "archieml";
 | |
| import docs from "../google.config.js";
 | |
| 
 | |
| const CWD = process.cwd();
 | |
| 
 | |
| const fetchGoogle = async ({ id, gid }) => {
 | |
| 	console.log(`fetching...${id}`);
 | |
| 
 | |
| 	const base = "https://docs.google.com";
 | |
| 	const post = gid
 | |
| 		? `spreadsheets/u/1/d/${id}/export?format=csv&id=${id}&gid=${gid}`
 | |
| 		: `document/d/${id}/export?format=txt`;
 | |
| 	const url = `${base}/${post}`;
 | |
| 
 | |
| 	try {
 | |
| 		const response = await fetch(url);
 | |
| 		const text = await response.text();
 | |
| 
 | |
| 		if (gid) return text;
 | |
| 
 | |
| 		const parsed = archieml.load(text);
 | |
| 		const str = JSON.stringify(parsed);
 | |
| 		return str;
 | |
| 	} catch (err) {
 | |
| 		throw new Error(err);
 | |
| 	}
 | |
| };
 | |
| 
 | |
| (async () => {
 | |
| 	for (let d of docs) {
 | |
| 		try {
 | |
| 			const str = await fetchGoogle(d);
 | |
| 			const file = `${CWD}/${d.filepath}`;
 | |
| 			fs.writeFileSync(file, str);
 | |
| 		} catch (err) {
 | |
| 			console.log(err);
 | |
| 		}
 | |
| 	}
 | |
| })(); | 
