如何使用 Google SpreadSheet 将成本上传到 Google Analytics
How to upload cost to Google Analytics using Google SpreadSheet
我知道可以通过 web interface 将数据成本上传到 Google Analytics。但是,我想让这个过程更加自动化,所以我考虑使用 google 电子表格和 google 应用程序脚本来缩短这个过程。
我的想法是在电子表格上获取我要上传到 Google Analytics 的数据,然后使用 Google Apps Script Advanced Services 将数据成本上传到我的 google分析 属性。不幸的是,关于 Google App Script Advanced Services 的文档非常有限。所以我希望有人能帮助我。这是到目前为止所做的:
function uploadDataCost() {
var accountId = "XXXXXXXX";
var webPropertyId = "UA-XXXXXXX";
var customDataSourceId = "XXXXXXXXXXXXX";
var csvData = convertRangeToCSVString();
var mediaData = Utilities.newBlob([]); //This variable is my main problem.
Analytics.Management.Uploads.uploadData(accountId, webPropertyId, customDataSourceId, mediaData);
}
我找到了转换 range to a CSV as a string 的代码。但我不知道如何获取此字符串并将其转换为 blob,以便我可以将其用作方法 Analytics.Management.Uploads.uploadData(accountId, webPropertyId, customDataSourceId, mediaData);
.
中的 mediaData 参数
我相信调用此方法可以解决问题,但我不确定如何在 mediaData 参数中传递数据,正如我所说,我找不到任何说明此方法工作原理的文档。我知道 mediaData 应该是 Blob 类型,但我找不到任何示例来解释如何创建 CSV 文件的 Blob。
function uploadData() {
var accountId = "xxxxxxxx";
var webPropertyId = "UA-xxxxxxxx-x";
var customDataSourceId = "xxxxxxxx";
var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var maxRows = ss.getLastRow();
var maxColumns = ss.getLastColumn();
var data = [];
for (var i = 1; i < maxRows;i++) {
data.push(ss.getRange([i], 1,1, maxColumns).getValues());
}
var newData = data.join("\n");
var blobData = Utilities.newBlob(newData, "application/octet-stream", "GA import data");
try {
var upload = Analytics.Management.Uploads.uploadData(accountId, webPropertyId, customDataSourceId, blobData);
SpreadsheetApp.getUi().alert("Uploading: OK");
}
catch(err) {
SpreadsheetApp.getUi().alert("Cannot upload: Failed");
}
}
我知道可以通过 web interface 将数据成本上传到 Google Analytics。但是,我想让这个过程更加自动化,所以我考虑使用 google 电子表格和 google 应用程序脚本来缩短这个过程。
我的想法是在电子表格上获取我要上传到 Google Analytics 的数据,然后使用 Google Apps Script Advanced Services 将数据成本上传到我的 google分析 属性。不幸的是,关于 Google App Script Advanced Services 的文档非常有限。所以我希望有人能帮助我。这是到目前为止所做的:
function uploadDataCost() {
var accountId = "XXXXXXXX";
var webPropertyId = "UA-XXXXXXX";
var customDataSourceId = "XXXXXXXXXXXXX";
var csvData = convertRangeToCSVString();
var mediaData = Utilities.newBlob([]); //This variable is my main problem.
Analytics.Management.Uploads.uploadData(accountId, webPropertyId, customDataSourceId, mediaData);
}
我找到了转换 range to a CSV as a string 的代码。但我不知道如何获取此字符串并将其转换为 blob,以便我可以将其用作方法 Analytics.Management.Uploads.uploadData(accountId, webPropertyId, customDataSourceId, mediaData);
.
我相信调用此方法可以解决问题,但我不确定如何在 mediaData 参数中传递数据,正如我所说,我找不到任何说明此方法工作原理的文档。我知道 mediaData 应该是 Blob 类型,但我找不到任何示例来解释如何创建 CSV 文件的 Blob。
function uploadData() {
var accountId = "xxxxxxxx";
var webPropertyId = "UA-xxxxxxxx-x";
var customDataSourceId = "xxxxxxxx";
var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var maxRows = ss.getLastRow();
var maxColumns = ss.getLastColumn();
var data = [];
for (var i = 1; i < maxRows;i++) {
data.push(ss.getRange([i], 1,1, maxColumns).getValues());
}
var newData = data.join("\n");
var blobData = Utilities.newBlob(newData, "application/octet-stream", "GA import data");
try {
var upload = Analytics.Management.Uploads.uploadData(accountId, webPropertyId, customDataSourceId, blobData);
SpreadsheetApp.getUi().alert("Uploading: OK");
}
catch(err) {
SpreadsheetApp.getUi().alert("Cannot upload: Failed");
}
}