使用 Google Apps 脚本将 Google 表格中的行追加到 Big Query 中的现有表

2024-01-05

我有一个 Google 表格,我想从中选择一些单元格并将它们作为行附加到 Big Query 中已存在的表格中。我编写了以下代码,运行时没有任何错误,但是当我检查 BQ 中的表时,它没有更新。

function myFunction() {

  var projectId = 'projectId'; 
  var datasetId = 'datasetId';
  var tableId = 'tableId';

  var fileId = 'fileId';
  var ss = SpreadsheetApp.openById(fileId);
  var sheet = ss.getSheets()[0];
  var range = sheet.getRange(21,2,sheet.getLastRow()-21,7);
  var values = range.getValues();
  var rowsCSV = values.join("\n");
  Logger.log(rowsCSV);

  function convertValuesToRows(rowsCSV) {
    var rows = [];  
    var headers = rowsCSV[0]; 


    for (var i = 1, numColumns = rowsCSV.length; i < numColumns; i++) {
      var row = BigQuery.newTableDataInsertAllRequestRows();
      row.json = rowsCSV[i].reduce(function(obj, value, index) {
        obj[headers[index]] = value;
        return obj
      }, {});
      rows.push(row);
    }; 
    return rows;
    }

  function bigqueryInsertData(rowsCSV, tableId) {
    var insertAllRequest = BigQuery.newTableDataInsertAllRequest();
    insertAllRequest.rows = convertValuesToRows(rowsCSV);     
    var response = BigQuery.Tabledata.insertAll(insertAllRequest, projectId, datasetId, tableId);
    if (response.insertErrors) {
      Logger.log(response.insertErrors);
    }
  }

}

我需要改变什么才能让它发挥作用?


将 rowsCSV 转换为 blob 允许我在 bigqueryInsertData 函数中使用 getDataAsString() 方法。我还手动命名了标题以匹配 BigQuery 中表的列名称。最终代码如下所示,运行没有错误,并且 BQ 表更新成功。

function myFunction() {

      var projectId = 'production-1077'; 
      var datasetId = 'alex_test';
      var tableId = 'Total_Jobs_Reporting_Table';

      var fileId = 'fileId';
      var ss = SpreadsheetApp.openById(fileId);
      var sheet = ss.getSheets()[0];
      var range = sheet.getRange(21,2,sheet.getLastRow()-21,7);
      var values = range.getValues();
      var rowsCSV = values.join("\n");
      var data = Utilities.newBlob(rowsCSV, 'application/octet-stream'); 

      function convertValuesToRows(data) {
        var rows = [];  
        var headers = ["name1","name2","name3","name4","name5","name6","name7"] ; 


        for (var i = 1, numColumns = data.length; i < numColumns; i++) {
          var row = BigQuery.newTableDataInsertAllRequestRows();
          row.json = data[i].reduce(function(obj, value, index) {
            obj[headers[index]] = value;
            return obj
          }, {});
          rows.push(row);
        }; 
        return rows;
     }

     function bigqueryInsertData(data, tableId) {
       var insertAllRequest = BigQuery.newTableDataInsertAllRequest();
       insertAllRequest.rows = convertValuesToRows(data);     
       var response = BigQuery.Tabledata.insertAll(insertAllRequest, projectId, datasetId, tableId);
       if (response.insertErrors) {
         Logger.log(response.insertErrors);
       }
    }

    bigqueryInsertData(Utilities.parseCsv(data.getDataAsString()), tableId);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Google Apps 脚本将 Google 表格中的行追加到 Big Query 中的现有表 的相关文章

  • 第一天安装者的原始 BigQuery 日志数据

    我对 StandardSQL 相当陌生 想要导出在给定日期 2017 年 6 月 1 日 安装的用户的原始 BigQuery 日志数据 以及安装日期 D0 D20 当天和之后前 3 周的会话数据 StandardSQL SELECT use
  • AdminDirectory.Members.list 授权错误

    我正在尝试使用 Admin SDK 并尝试在 Google 电子表格中列出群组成员 这是我想出的代码 function recordGroupsMembers var ss SpreadsheetApp getActiveSpreadshe
  • 使用 Google Apps 脚本从 Firebase 读取数据

    因此 正如标题所示 我目前正在解决一个相当麻烦的问题 这是场景 我有一个 Google 电子表格 其中包含一个包含姓名 电子邮件和到期日期的模板 但是 它不包含实际数据 数据本身位于 Firebase 中并且不断变化 那么 我的目标是让sc
  • 如何使用脚本获取 Google 文档中的修订历史记录?

    如何使用脚本获取 Google 文档中的修订历史记录 我该怎么做 一些想法 您可能需要启用 Drive SDK 您可以在 资源 gt 高级 Google 服务 菜单中执行此操作 然后执行类似以下操作 var revisions Drive
  • 类型错误:ss.getSheetByName 不是函数

    我的代码旨在从用户输入表单中获取数据并将新行插入到电子表格中 function addNewRow rowData const currentDate new Date const ss SpreadsheetApp getActiveSh
  • Google App Script ContentService downloadAsFile 不起作用

    我有一个使用 Google App Script 开发的网络应用程序HtmlService并从 html 表单中 使用以下命令填充 Google 驱动器中的 Excel 工作表SpreadsheetApp 另一个部门正在打电话Content
  • 如何使 onEdit() 触发函数应用于多个工作表

    我正在处理一张 Google 表格 我有一个脚本可以填充column B当我更新时有时间戳column A在第一个选项卡上 不过 我需要它在第二个选项卡上执行相同的操作 但我无法让它在那里工作 我需要改变什么 我当前使用的脚本是 funct
  • 如何使用脚本格式化 Google 文档中的文本

    我想编写一个脚本来查找所有特定单词并格式化它们的颜色 我尝试了以下操作 但似乎不起作用 function ChangeColor var body DocumentApp getActiveDocument getBody var mywo
  • javascript 对象是否像 Ruby 一样“开放”?

    在 Ruby 中 我可以使用与声明自己的语法相同的语法来添加和修改任何类 对象或方法的功能 因为 Ruby 有 开放类 JavaScript 是这样的吗 举个例子 就我而言 我想更改 Google Apps 脚本处理 URL 对象的方式 以
  • 列出文件夹中的所有文件,包括子文件夹中的文件

    我正在尝试创建一个 Google Apps 脚本 该脚本将允许用户获取文件夹内的所有文件 包括连接到主文件夹的子文件夹内的文件 请注意 在我的代码中 我是提供folderid的人 这将是主文件夹 我已设法从文件夹中获取所有文件 但我还希望提
  • Google App脚本:无法保留前导零,因为它被自动删除

    我是谷歌脚本的新手 我有一个像下面这样的场景 我有 Sheet1 其中包含 A 列和 B 列 通常我尝试将十进制值存储到其中 我的意思是A列中的整数部分和B列中的小数部分 例如 场景一 如果值为 23 75 则 Column A 应为 23
  • 自动从外部数据库加载 Google 电子表格数据

    我有一个共享的 Google 电子表格 工作表的某些列必须填充数据库服务器 PostgreSQL 中存在的数据 SQL 查询 此外 数据加载必须安排为自动完成 例如每天 1 点 最后 我需要在电子表格中进行一些调整 例如 加载后将日期时间放
  • 如何修复 OnChange 脚本,该脚本运行良好,但在修改 Google 表格后停止运行

    概述 工作簿根据每条记录的类别分数计算每条记录 或行 的总体分数 类别分数是通过对每个记录的数百个数据点执行的计算得出的 根据我在网上找到的几个示例和教程 我编译了代码以发送名为 checkComplete 的 onChange 电子邮件
  • 通过 Google Apps 脚本发送电子邮件时出现问题

    我有时已经成功地通过 Google Apps 脚本发送电子邮件 但是 当我打开一个新的 Google Workspace 帐户并使用相同的代码将相同的内容发送到同一个接收者时 新帐户不起作用 我收到一条 消息已被阻止 的消息 电子邮件受保护
  • Google Apps 脚本中的地图对象支持

    Google Apps 脚本是否支持Map https developer mozilla org en docs Web JavaScript Reference Global Objects Map object 当我尝试使用它时 我得
  • Python BigQuery 存储。并行读取多个流

    我有以下玩具代码 import pandas as pd from google cloud import bigquery storage v1beta1 import os import google auth os environ G
  • 如何设置多个过滤器?

    我有一个关于将过滤器应用于多个值以使用 Google 脚本隐藏它们的问题 我有一个具有多种状态的项目跟踪器 例如 达到目标 已完成 已取消 已延迟 等 我想编写一个脚本来设置 状态 列的筛选器值 以便标记为 已完成 或 的行 已取消 被隐藏
  • 如何删除 GMail 标签 - Google Apps 脚本

    我想从放回收件箱的每封邮件中删除 后续 标签 我尝试了几件事 但仍然没有成功 我希望有人可以帮助我或为我指明正确的方向 涉及的函数是 function moveToInbox page GmailApp moveThreadsToInbox
  • BigQuery 未显示链接的 Firebase Analytics 事件日志的任何数据集

    我将我的帐户链接到 Big Query 但 Firebase Analytics 事件不会自动加载到 BigQuery 中 显示 未找到数据集 警告 我的工作进度附在下面 请查收 I have getting firebase Analyt
  • Google BQ:运行参数化查询,其中参数变量是 BQ 表目标

    我正在尝试从 Linux 命令行为 BQ 表目标运行 SQL 此 SQL 脚本将用于多个日期 客户端和 BQ 表目标 因此这需要在我的 BQ API 命令行调用中使用参数 标志 parameter 现在 我已经点击此链接来了解参数化查询 h

随机推荐

  • 使用Linux伪终端测试QSerialPort

    我想使用带有伪终端的 Qt 串行端口来测试应用程序 根据我实现的手册页 open master QSerialPort master dev ptmx master open QSerialPort ReadWrite int master
  • R散点图:符号颜色代表重叠点的数量

    当许多点重叠时 散点图可能很难解释 因为这种重叠会掩盖特定区域中数据的密度 一种解决方案是对绘制点使用半透明颜色 以便不透明区域表明这些坐标中存在许多观测值 下面是我在 R 中的黑白解决方案的示例 MyGray lt rgb t col2r
  • 将类名与变量 Angular 2 连接起来

    我想要类似的东西class myClass classVar 我试图将类名与范围内的变量值连接起来 但不起作用 div span span div Add a 和一个空格 div span span div
  • !!(x) 在 C(尤其是 Linux 内核)中意味着什么?

    我一直在阅读 Linux 内核 具体来说 2 6 11 我遇到了以下定义 define unlikely x builtin expect x 0 来自 linux 2 6 11 include linux compiler h 61lxr
  • 对于自定义容器类的成员,List.Sort() 与 List.OrderBy() 的实用程序

    我发现自己回顾了一些旧的 3 5 框架遗留代码 并发现了一些点 其中有一大堆列表和字典必须以同步方式更新 我已经确定 通过将这些融合到新的自定义类的自定义容器类中 我可以使这个过程变得更加易于使用和理解 然而 在某些方面 我开始担心通过特定
  • 使用 jquery + jsonp,Internet Explorer 不保存 ASP.NET sessionID

    所以我正在使用 Jquery 做一些相当简单的 JSONP 东西 总体结构 网站存在于域中A JavaScript 存在于域中B JSON 服务也存在于域中B 该站点调用 jsonp 调用 json 服务 net 的方法 在 net 中我设
  • Jetty Servlet 不运行——而是获取目录列表

    我正在尝试让在 Netbeans 中构建并运行的 servlet 在 jetty 服务器上运行 本地部署始终有效 但是在 Jetty 上部署会导致目录列表 而不是实际运行的 servlet 问题似乎出在上下文配置上 但我不知道我做错了什么
  • Jax-RS 未使用 @provider 注释注册资源

    我有一个使用 jersey api 在 weblogic 12c 中运行的休息应用程序 我有一个带有注释 provider 的http 请求过滤器类 但是 在部署应用程序时 过滤器类未向我在 ApplicationConfig 类中添加的其
  • 具有 Owin 身份验证的 Mono

    我有一个在 Mono 中运行的 Owin 应用程序 我正在尝试让身份验证在其上正常工作 我使用了以下信息这一页 https coding abel nu 2014 06 writing an owin authentication midd
  • 如何使用for循环matlab调用顺序变量? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我有一堆变量叫做length act
  • -O0、-O1 和 -g 有什么区别

    我想知道如何使用 O0 O1 和 g 在库中启用调试符号 有些建议使用 O0 来启用调试符号 有些建议使用 g 那么 g 和 O0 之间的实际区别是什么 01 和 O0 之间的区别是什么 哪个最好使用 O0是优化级别 0 无优化 与省略 O
  • 无法从“pyproj”导入名称“CRS”以使用 osmnx 库

    I have used a fresh anaconda install to download and install all the required modules for osnmx library but I got the fo
  • 我们什么时候使用ANTLR

    谁能指导我在 ASP Net C 项目中使用 ANTLR dll 的目的 我刚刚注意到antlr 运行时 Antlr3 运行时 Antlr3 实用程序某些项目中引用的程序集 如果能引用一些现实世界的例子或者任何指向网页的链接都会有用 那就太
  • 如何在文本区域更改时将“必需”属性添加到输入?

    我需要在文本区域 orderComments 中输入文本的情况下将 required 属性添加到 html select toDept 中 下面是我的代码 我缺少什么 我需要在更改事件或其他事件上运行 jquery 吗 document r
  • EJB企业应用程序不需要EJB接口

    我创建了一个 Java EE 应用程序并向 EJB 项目添加了一个无状态会话 bean EJB 项目是 web WAR 项目中的依赖项 我将在 EJB 项目中创建的 EJB 注入到我的一个 servlet 中 这工作正常 我能够在 Web
  • 我可以获取字符串形式的 saml-token 吗?

    我正在使用 spring security saml2 1 0 0 RELEASE 它运作良好 对我来说非常好 但新的要求提出了 我需要 saml token 作为字符串 我可以将 saml token 作为字符串获取吗 我在日志中找到 s
  • 在 Android Studio 2.3 上创建项目时出错

    我已将 Android Studio 从 2 2 升级到 2 3 当我创建带有导航活动的新 Android 项目时 出现两个错误 Error java util concurrent ExecutionException java lang
  • Java 9 的 Maven 编译问题

    尝试使用 JDK 9 0 1 编译 Maven 项目时 我遇到了这个堆栈跟踪 但没有太多解释 Exception in thread main java lang AssertionError at jdk compiler com sun
  • 使用 C# 为所有桌面快捷方式创建自定义右键单击上下文菜单项(Windows 资源管理器)

    问题很简单 我有很多桌面快捷方式 它们指向很多文件 但我也有很多快捷方式 它们指向这些快捷方式所指向的目录 我想通过简单地为所有快捷方式 lnk 文件 添加另一个右键菜单选项来消除这种冗余 该选项允许您将 explorer exe 打开到包
  • 使用 Google Apps 脚本将 Google 表格中的行追加到 Big Query 中的现有表

    我有一个 Google 表格 我想从中选择一些单元格并将它们作为行附加到 Big Query 中已存在的表格中 我编写了以下代码 运行时没有任何错误 但是当我检查 BQ 中的表时 它没有更新 function myFunction var