我开始使用Google Script。
我想知道在Google表格上生成单元格事件时,是否有某种方式可以在Google脚本中打印(无论是文本还是Google工作表数据)。
任何建议都会有所帮助。 感谢。
答案 0 :(得分:1)
Google Script无法使用系统功能,例如打印对话框。
答案 1 :(得分:1)
在继续进行之前,请确保您已将谷歌云支持打印机添加到谷歌帐户进行打印,因为安全原因谷歌脚本不支持打印等服务
打开Google云端硬盘。
MswhXl8fVhTFUH_Q3UOJbXvxhMjh3Sh48
添加到添加图书馆框。从列表中选择最新版本并设置标识符 OAuth2
。打开Google云端控制台。
OAuth Client Id
选项。在“应用程序类型”下,选择“Web应用程序”为Application设置一些名称。
在授权脚本来源url框粘贴下面的链接。
https://apis.google.com
在授权重定向的网址框中粘贴以下链接。
https://script.google.com/macros/d/{SCRIPT_ID}/usercallback
SCRIPT_ID来自项目属性。
脚本。
在脚本窗口中粘贴下面的代码。
function showURL() {
var cpService = getCloudPrintService();
if (!cpService.hasAccess()) {
console.log(cpService.getAuthorizationUrl());
}
}
function getCloudPrintService() {
return OAuth2.createService('print')
.setAuthorizationBaseUrl('https://accounts.google.com/o/oauth2/auth')
.setTokenUrl('https://accounts.google.com/o/oauth2/token')
.setClientId('CLIENT_ID’)
.setClientSecret('CLIENT_SECRET')
.setCallbackFunction('authCallback')
.setPropertyStore(PropertiesService.getUserProperties())
.setScope('https://www.googleapis.com/auth/cloudprint')
.setParam('login_hint', Session.getActiveUser().getEmail())
.setParam('access_type', 'offline')
.setParam('approval_prompt', 'force');
}
function authCallback(request) {
var isAuthorized = getCloudPrintService().handleCallback(request);
if (isAuthorized) {
return HtmlService.createHtmlOutput('You can now use Google Cloud Print from Apps Script.');
} else {
return HtmlService.createHtmlOutput('Cloud Print Error: Access Denied');
}
}
getPrinterList 此方法将检查链接打印机列表到帐户并返回打印机ID,NAME和DESCRIPTION
function getPrinterList() {
var response = UrlFetchApp.fetch('https://www.google.com/cloudprint/search', {
headers: {
Authorization: 'Bearer ' + getCloudPrintService().getAccessToken()
},
muteHttpExceptions: true
}).getContentText();
var printers = JSON.parse(response).printers;
for (var p in printers) {
Logger.log("%s %s %s", printers[p].id, printers[p].name, printers[p].description);
}
}
最后一步。
使用必需参数运行以下方法,将打印作业添加到云端打印机。
function printGoogleDocument(docID, printerID, docName) {
var ticket = {
version: "1.0",
print: {
color: {
type: "STANDARD_COLOR",
vendor_id: "Color"
},
duplex: {
type: "NO_DUPLEX"
}
}
};
var payload = {
"printerid" : printerID,
"title" : docName,
"content" : DriveApp.getFileById(docID).getBlob(),
"contentType": "application/pdf",
"ticket" : JSON.stringify(ticket)
};
var response = UrlFetchApp.fetch('https://www.google.com/cloudprint/submit', {
method: "POST",
payload: payload,
headers: {
Authorization: 'Bearer ' + getCloudPrintService().getAccessToken()
},
"muteHttpExceptions": true
});
response = JSON.parse(response);
if (response.success) {
Logger.log("%s", response.message);
} else {
Logger.log("Error Code: %s %s", response.errorCode, response.message);
}
}
感谢。
如果您遇到任何错误,请留下回复。