使用 App 脚本从 Google 绘图创建 png 文件
Create a png file from a Google Drawing using App Script
我有一个装满 Google 绘图的文件夹。
我在 Google 电子表格中获得了 Google 绘图的文件名。
我可以从 Google 电子表格中提取文件名,遍历文件名,找到所有 Google 图纸,然后……这就是我遇到困难的地方。
我想将图纸转换为 PNG 文件并将 PNG 文件存储在单独的驱动器文件夹中。
这是我目前的脚本...
function load_list_of_images() {
var course_workbook_name = "SPREADSHEET"; // Title of spreadsheet to download files
var course_workbooks = DriveApp.getFilesByName(course_workbook_name); // There may be more than one!
try{
var course_workbook_id = course_workbooks.next();
Logger.log("Spreadsheet ID : " + course_workbook_id);
} catch(error) {
Logger.log("Spreadsheet doesn't exist");
return(null);
}
var course_workbook = SpreadsheetApp.open(course_workbook_id);
var image_list_sheet = course_workbook.getSheetByName("image_list");
// Get list of image names (without extensions)
var list_of_images = [];
var images = image_list_sheet.getRange(1,1,1000).getValues();
for (var row in images) {
for (var col in images[row]) {
if (images[row][col] == "") {
return(list_of_images);
}
list_of_images.push(images[row][col]);
}
}
}
function download_images() {
var list = load_list_of_images();
if (list == null){
return(null);
}
for (var row in list){
var image_name = list[row];
var image_exists = DriveApp.getFilesByName(image_name);
// There may be more than one
if (image_exists.hasNext()) {
var image = image_exists.next()
var gDraw_file = DriveApp.getFileById(image.getId());
DriveApp.createFile(gDraw_file.getBlob());
}
}
}
当我 运行 这样做时,所有 Google 图纸都转换为 PDF 文件并存储在我的驱动器文件夹中。
您需要指定 mimeType 您要将绘图转换为哪个
但是,无法直接从drawings
转换为png
,您需要执行以下步骤:
- 创建导出 link 以将文件导出为
image/png
- 使用 UrlFetchApp
获取此 link
- 从结果的 blob 创建文件
示例
var id = image.getId();
var exportUrl = "https://www.googleapis.com/drive/v3/files/" + id + "/export?mimeType=image/png";
var urlFetchOptions = {
headers: {Authorization : "Bearer " + ScriptApp.getOAuthToken()}
};
var blob= UrlFetchApp.fetch(exportUrl, urlFetchOptions).getBlob();
DriveApp.createFile(blob);
我有一个装满 Google 绘图的文件夹。 我在 Google 电子表格中获得了 Google 绘图的文件名。 我可以从 Google 电子表格中提取文件名,遍历文件名,找到所有 Google 图纸,然后……这就是我遇到困难的地方。 我想将图纸转换为 PNG 文件并将 PNG 文件存储在单独的驱动器文件夹中。
这是我目前的脚本...
function load_list_of_images() {
var course_workbook_name = "SPREADSHEET"; // Title of spreadsheet to download files
var course_workbooks = DriveApp.getFilesByName(course_workbook_name); // There may be more than one!
try{
var course_workbook_id = course_workbooks.next();
Logger.log("Spreadsheet ID : " + course_workbook_id);
} catch(error) {
Logger.log("Spreadsheet doesn't exist");
return(null);
}
var course_workbook = SpreadsheetApp.open(course_workbook_id);
var image_list_sheet = course_workbook.getSheetByName("image_list");
// Get list of image names (without extensions)
var list_of_images = [];
var images = image_list_sheet.getRange(1,1,1000).getValues();
for (var row in images) {
for (var col in images[row]) {
if (images[row][col] == "") {
return(list_of_images);
}
list_of_images.push(images[row][col]);
}
}
}
function download_images() {
var list = load_list_of_images();
if (list == null){
return(null);
}
for (var row in list){
var image_name = list[row];
var image_exists = DriveApp.getFilesByName(image_name);
// There may be more than one
if (image_exists.hasNext()) {
var image = image_exists.next()
var gDraw_file = DriveApp.getFileById(image.getId());
DriveApp.createFile(gDraw_file.getBlob());
}
}
}
当我 运行 这样做时,所有 Google 图纸都转换为 PDF 文件并存储在我的驱动器文件夹中。
您需要指定 mimeType 您要将绘图转换为哪个
但是,无法直接从drawings
转换为png
,您需要执行以下步骤:
- 创建导出 link 以将文件导出为
image/png
- 使用 UrlFetchApp 获取此 link
- 从结果的 blob 创建文件
示例
var id = image.getId();
var exportUrl = "https://www.googleapis.com/drive/v3/files/" + id + "/export?mimeType=image/png";
var urlFetchOptions = {
headers: {Authorization : "Bearer " + ScriptApp.getOAuthToken()}
};
var blob= UrlFetchApp.fetch(exportUrl, urlFetchOptions).getBlob();
DriveApp.createFile(blob);