相关疑难解决方法(0)

使用 javascript 将谷歌电子表格导出为 xlsx

似乎使用新版本的谷歌电子表格不再可能使用 JS 下载整个谷歌电子表格。到目前为止,我一直在使用这种方法(对于之前创建的文件仍然可以正常工作):

 var xhr = new XMLHttpRequest();
 xhr.open('GET', 'https://docs.google.com/feeds/download/spreadsheets/Export?key=' + id + '&exportFormat=xlsx');

 xhr.responseType = 'arraybuffer';
 xhr.setRequestHeader('Authorization', 'Bearer ' + gapi.auth.getToken().access_token);

 xhr.onload = function() {
      ...
 };

 xhr.send();
Run Code Online (Sandbox Code Playgroud)

我找到了新的下载网址

https://docs.google.com/spreadsheets/d/_ID_/export?format=xlsx&id=_ID_
Run Code Online (Sandbox Code Playgroud)

但不幸的是,没有Access-Control-Allow-Origin标题,因此无法使用 JS 访问该链接。我还有其他可能下载文件吗?

Google Drive API 将导出 url 显示为:

https://docs.google.com/spreadsheets/export?id=_ID_&exportFormat=xlsx
Run Code Online (Sandbox Code Playgroud)

但也没有Access-Control-Allow-Origin标题。

是否有其他可能仅使用 JS 下载此文件?

javascript google-spreadsheet-api google-drive-api

5
推荐指数
1
解决办法
2557
查看次数

以横向方式创建 PDF(Google Apps 脚本)

我正在尝试弄清楚如何通过 Google Apps 脚本创建以横向(A4 尺寸)显示的 PDF 文档。这是迄今为止我用来创建 PDF 的代码,它以纵向显示。

function pdfSheet() {
  var d = new Date();
  var cdate = d.getDate();
  var cmonth = d.getMonth() + 1;
  var cyear = d.getFullYear();
  var current = [cdate + "-" + cmonth + "-" + cyear];

  var imageBlob = UrlFetchApp.fetch("https://sites.google.com/site/mysite/smalllogo.png").getBlob();
  var base64EncodedBytes = Utilities.base64Encode(imageBlob.getBytes());
  var logo = "<img src='data:image/png;base64," + base64EncodedBytes + "' width='170'/>";


  var html = "<table width='100%'><tr><td align='right'>" + logo + "<br><br><b>Date:</b> " + current + "</td></tr></table>"; //PDF content will carry …
Run Code Online (Sandbox Code Playgroud)

pdf blob orientation google-apps-script

5
推荐指数
1
解决办法
7456
查看次数

使用Google Apps脚本将所有工作表转换为PDF

我正在尝试将包含多个工作表的Google电子表格转换为PDF文件.下面的脚本有效,但它只使用电子表格的最后一页创建PDF.

function savePDFs() {
    SpreadsheetApp.flush();

    var ss = SpreadsheetApp.getActiveSpreadsheet();
    var sheets = ss.getSheets();
    var url = ss.getUrl();

    //remove the trailing 'edit' from the url
    url = url.replace(/edit$/,'');

    //additional parameters for exporting the sheet as a pdf
    var url_ext = 'export?exportFormat=pdf&format=pdf' + //export as pdf

    //below parameters are optional...
    '&size=letter' + //paper size
    '&portrait=false' + //orientation, false for landscape
    '&fitw=true' + //fit to width, false for actual size
    '&sheetnames=false&printtitle=false&pagenumbers=false' + //hide optional
    '&gridlines=false' + //false = hide gridlines
    '&fzr=false' + //do …
Run Code Online (Sandbox Code Playgroud)

pdf pdf-generation google-sheets google-apps-script

3
推荐指数
2
解决办法
9107
查看次数

将谷歌工作表中的一系列单元格作为PDF下载到本地计算机和其他自动化脚本的脚本?

我在 g 表中制作了发票格式如下: 在此处输入图片说明

在单元格 B8:C8(在 Invoice To 下方)中,有一个下拉菜单可以从客户工作表中获取数据。

什么是要求?

  1. 制作选定单元格的 PDF。我想稍后添加一些按钮并为它们分配宏/脚本,并且 g sheet 打印操作会打印工作表上的所有内容。所以只需要打印发票部分(范围-A1:G46)。工作表名称为客户名称 + 发票日期(F8)。

我已经使用了一些来自堆栈溢出的脚本,但它们正在增加边距。我想要的是一个完整的 pdf 文件,如果我使用打印(ctrl+p)按钮,我就可以得到它。

  1. 将发票数据保存到“发票登记”表以跟踪发票和付款。这也达到了。

我可以通过使用相对引用记录宏来实现这一点。

    function Untitledmacro1() {
  var spreadsheet = SpreadsheetApp.getActive();

  spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Invoice Register'), true);
  spreadsheet.getRange('A1').activate();  
  spreadsheet.getCurrentCell().getNextDataCell(SpreadsheetApp.Direction.DOWN).activate();  
  spreadsheet.getCurrentCell().offset(1, 0).activate();
  spreadsheet.getCurrentCell().setFormulaR1C1('=R[-1]C[0]+1');

  spreadsheet.getCurrentCell().offset(0, 1).activate();

  spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Invoice Register'), true);
  spreadsheet.getRange('Invoice!E8').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false);

  spreadsheet.getCurrentCell().offset(0, 1).activate();

  spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Invoice Register'), true);
  spreadsheet.getRange('Invoice!F8').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false);

  spreadsheet.getCurrentCell().offset(0, 1).activate();

  spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Invoice Register'), true);
  spreadsheet.getRange('Invoice!B8:C8').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false);

  spreadsheet.getCurrentCell().offset(0, 2).activate();

  spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Invoice Register'), true);
  spreadsheet.getRange('Invoice!F16').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
};
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

  1. 保存发票数据并生成具有特定单元格范围的 pdf 后,我想清除某些字段中的数据。这也达到了。
function clearRange() {
  //replace 'Sheet1' with your actual …
Run Code Online (Sandbox Code Playgroud)

javascript google-sheets google-apps-script

2
推荐指数
1
解决办法
2347
查看次数