【问题标题】:Generate google docs with QR code from google sheet使用谷歌表格中的二维码生成谷歌文档
【发布时间】:2017-05-11 05:29:45
【问题描述】:

我有一个包含许多单元格的 Google 表格,其中一个是 QR 码(QR 码包含姓名和员工 ID)。通过替换占位符文本,根据工作表中的值生成 Google Docs 文件。此 Google Doc 将用作数字通行证。

如何将 QR 码图像放置在从 Google 表格数据生成的 Google 文档中?

例如。在工作表中,我在 A、B 和 D 列中存储了 Employee IDNameQR Code
我使用replaceText 替换Document 中的占位符文本:

      copyBody.replaceText('EmployeeID', row[i][0]);
      copyBody.replaceText('firstName', row[i][1]);
      copyBody.replaceText('qrCode', row[i][3]); etc.

二维码作为公式结果存储在工作表中:
=IMAGE("https://chart.googleapis.com/chart?chs=150x150&cht=qr&chl=" & C2)

当我运行我的脚本时,模板文档中的EmployeeIDName 字段被替换为所需的值,但qrCode 字段中没有任何内容。

【问题讨论】:

    标签: google-apps-script google-docs


    【解决方案1】:

    我不认为在您的电子表格单元格上生成的 QR 码被视为文本,因此该函数将用任何内容替换“qrCode”。你应该使用上面的代码:

    var doc = DocumentApp.openById('DocId')
    var ss = SpreadsheetApp.openById('SsId');
    var qrCode = ss.getRange('qrCode').getValue(); // Get the QR code value from te Spreadsheet
    var url = "https://chart.googleapis.com/chart?chs=150x150&cht=qr&chl=" + qrCode 
    var resp = UrlFetchApp.fetch(url); // Get the image of QR code
    var barcode = doc.getChild(0).asParagraph().appendInlineImage(resp.getBlob()); // Value of child depend of where you want your QR code. 
    

    更多关于appendInlineImage(blob) methodgetChild(name) method的信息

    【讨论】:

    • 谢谢 Pierre。试一试,但我在 getRange('qrCode') 上收到错误 - 未找到范围。
    • 这很正常,它得到一个名为'qrCode'的范围。我假设带有 qrCode 的单元格是这样命名的。您可以更改名称以放置坐标或重命名单元格。
    • 是的,我做到了。另一个错误类型错误:在对象 1zmPHKOJrvGlhDVOAQyCsWp2tW14SfkXjnB0JH17aQng 中找不到函数 getChild。
    • 您必须更改 getChild(method) 的值才能放置二维码。看看documentation
    • 我不太明白你想做什么,我认为你应该在一个新问题中问它,因为它与原来的问题不同。
    【解决方案2】:

    您可以使用以下公式在 google sheet 中生成 QR 图像:

    =image("https://chart.googleapis.com/chart?chs=150x150&cht=qr&chl="&A2)
    

    在单元格 B2 中设置此公式。 将您的网址或其他任何内容放在单元格 A2 中

    二维码会自动出现在B2单元格中 您可能需要调整单元格大小

    【讨论】:

    • 看来这就是我想要的。会尝试回来
    【解决方案3】:

    IMAGE =IMAGE(URL),即=IMAGE("http://....") 但在你的公式中:

    =IMAGE("https://chart.googleapis.com/chart?chs=150x150&cht=qr&chl="&C2)
    

    哪个“&C2”放在“”之外

    在使用图像功能之前,您必须将图像 URL 连接在一起。 我想你需要先加入图片网址:

     =JOIN("","https://chart.googleapis.com/chart?chs=150x150&cht=qr&chl=&",C2)
    

    `

    或者,您可以将这两个功能结合起来:

    =IMAGE(JOIN("","https://chart.googleapis.com/chart?chs=150x150&cht=qr&chl=&",C2))
    

    【讨论】:

      【解决方案4】:

      针对仍在寻找如何执行此操作的用户的更新(2018 年 8 月)...

      Google 已弃用 QR 图表 API。我找到了这个基于 API 的 QR 生成器:http://goqr.me/api/

      使用以下语法对我来说效果很好:

      =image("https://api.qrserver.com/v1/create-qr-code/?size=160x160"&[YOUR_DATA],3)
      

      [YOUR DATA] 需要进行“URL 编码”才能工作,如果它不止一个数字或单词。这可以通过 Google 表格的 ENCODEURL 函数来完成。这是我用来显示代表两个连接单元格的二维码的整个公式,它们之间有一个连字符:

      =IMAGE("https://api.qrserver.com/v1/create-qr-code/?size=160x160&data="&ENCODEURL(G1&" - "&G2),3)
      

      【讨论】: