我正在尝试查找 Google Apps脚本->高级服务-> BigQuery 的完整参考资料。 Apps Script BigQuery reference仅提供了一些示例,并未涵盖所有方法。
我们应该检查API参考以获取方法的参数。
我找不到检查表是否存在的方法。因此,我只需要继续删除表即可(无论它是否存在都没有关系),将删除内容包装在try块中。
try {
var deleteResults = BigQuery.Tables.remove(project, dataset, table);
Logger.log(deleteResults);
} catch (err){
//return false;
}
这是执行“检查表是否存在,如果存在,则删除它”任务的正确方法吗?
现在,我想知道工作是否开始于
BigQuery.Tables.remove(project, dataset, table);
已完成,但是Logger.log(deleteResults);
仅记录了null
:
[18-07-19 14:12:24:927 PDT] null
所以BigQuery.Tables.remove
方法什么都不返回?我怎么知道删除作业是否完成?
答案 0 :(得分:2)
如文档中所述,“高级服务”只是相关Google API的包装。因此,您不会在Apps Script中找到有关高级服务的文档,因为方法在相应的API页面上进行了详细介绍。您可以使用编辑器中的自动完成功能或遵循Google's tips
确定方法签名您可以通过list
ing all tables in your project & dataset确定表是否存在,然后检查相关属性(id
,friendlyName
,tableReference.tableId
等),或者只是尝试get
并处理相关的错误(如果不存在)。如果您的唯一目标是删除它(如果存在),那么尝试/捕获方法最简单。根据{{3}}的API文档,如果成功,您将收到一个空响应。
示例使用table#delete
方法的Apps脚本,该方法又使用BigQuery.Tables.list
个"fields"
可选参数:
function getAllTables(projectId, datasetId) {
const options = {
fields: "nextPageToken,tables(id,friendlyName,tableReference/tableId)"
}
// Collect all tables - there may be more than one page's worth!
const tables = [];
do {
var search = BigQuery.Tables.list(projectId, datasetId, options);
options.pageToken = search.nextPageToken;
if (search.tables && search.tables.length)
Array.prototype.push.apply(tables, search.tables);
} while (options.pageToken);
return tables;
}
通过partial responses重命名的示例:
function renameTable(newName, projectId, datasetId, tableId) {
// The fields and associated new values we're setting.
const resource = {"friendlyName": newName};
var response = BigQuery.Tables.patch(resource, projectId, datasetId, tableId);
// Log the updated table metadata in Stackdriver.
console.log(response);
}
(如果您使用的是update
,则需要提供完整的所需表,而不仅仅是提供您要更改的表。)