gpt4 book ai didi

google-apps-script - Adsense 报告 Google 表格

转载 作者:行者123 更新时间:2023-12-04 16:15:49 26 4
gpt4 key购买 nike

我正在使用此代码在 Google 电子表格上生成 Adsense 报告。

问题是它每天都会创建一个新的电子表格,导致我的报告困惑。

我应该更改什么,以便创建单个电子表格,以便每天更新相同的电子表格?

https://developers.google.com/apps-script/advanced/adsense

/**
* Generates a spreadsheet report for an ad client.
* @param {string} adClientId The ad client ID
*/
function generateReport(adClientId) {
// Prepare report.
var today = new Date();
var oneWeekAgo = new Date(today.getTime() - 7 * 24 * 60 * 60 * 1000);

var timezone = Session.getTimeZone();
var startDate = Utilities.formatDate(oneWeekAgo, timezone, 'yyyy-MM-dd');
var endDate = Utilities.formatDate(today, timezone, 'yyyy-MM-dd');

var report = AdSense.Reports.generate(startDate, endDate, {
// Specify the desired ad client using a filter.
filter: ['AD_CLIENT_ID==' + escapeFilterParameter(adClientId)],
metric: ['PAGE_VIEWS', 'AD_REQUESTS', 'AD_REQUESTS_COVERAGE', 'CLICKS',
'AD_REQUESTS_CTR', 'COST_PER_CLICK', 'AD_REQUESTS_RPM',
'EARNINGS'],
dimension: ['DATE'],
// Sort by ascending date.
sort: ['+DATE']
});

if (report.rows) {
var spreadsheet = SpreadsheetApp.create('AdSense Report');
var sheet = spreadsheet.getActiveSheet();

// Append the headers.
var headers = report.headers.map(function(header) {
return header.name;
});
sheet.appendRow(headers);

// Append the results.
sheet.getRange(2, 1, report.rows.length, headers.length)
.setValues(report.rows);

Logger.log('Report spreadsheet created: %s',
spreadsheet.getUrl());
} else {
Logger.log('No rows returned.');
}
}

/**
* Escape special characters for a parameter being used in a filter.
* @param {string} parameter The parameter to be escaped.
* @return {string} The escaped parameter.
*/
function escapeFilterParameter(parameter) {
return parameter.replace('\\', '\\\\').replace(',', '\\,');
}

最佳答案

  • 您想在不创建新电子表格的情况下使用相同的电子表格。
  • 在您的脚本中,您希望每次都将数据添加到新工作表中。
  • 您想使用 Google Apps 脚本来实现这一点。

  • 如果我的理解是正确的,这个答案怎么样?请将此视为几种可能的答案之一。

    retrofit 要点:
  • 在你的情况下,我认为你的目标可以通过修改###的脚本来实现。的 if (report.rows) {###} .
  • 为了实现您的目标,我想提出以下流程。
  • 检索数据。
  • 当电子表格存在时,数据将放入现有的电子表格。
  • 在这种情况下,电子表格 ID 被保存到 PropertiesService。
  • 当电子表格不存在时,通过创建新电子表格将数据放入电子表格。

  • 修改后的脚本:

    当你的脚本被修改时,它变成如下。

    从:
    if (report.rows) {
    var spreadsheet = SpreadsheetApp.create('AdSense Report');
    var sheet = spreadsheet.getActiveSheet();

    // Append the headers.
    var headers = report.headers.map(function(header) {
    return header.name;
    });
    sheet.appendRow(headers);

    // Append the results.
    sheet.getRange(2, 1, report.rows.length, headers.length)
    .setValues(report.rows);

    Logger.log('Report spreadsheet created: %s',
    spreadsheet.getUrl());
    } else {
    Logger.log('No rows returned.');
    }

    到:
    if (report.rows) {
    var prop = PropertiesService.getScriptProperties();
    var spreadsheetId = prop.getProperty("spreadsheetId");
    var spreadsheet;
    if (spreadsheetId) {
    spreadsheet = SpreadsheetApp.openById(spreadsheetId);
    } else {
    spreadsheet = SpreadsheetApp.create('AdSense Report');
    prop.setProperty("spreadsheetId", spreadsheet.getId());
    }
    var sheet = spreadsheet.getActiveSheet();
    sheet.clear(); // Clear sheet.

    // Append the headers.
    var headers = report.headers.map(function(header) {return header.name});
    sheet.appendRow(headers);

    // Append the results.
    sheet.getRange(2, 1, report.rows.length, headers.length).setValues(report.rows);

    Logger.log('Report spreadsheet created: %s', spreadsheet.getUrl());
    } else {
    Logger.log('No rows returned.');
    }

    笔记:
  • 在上述修改后的脚本中,使用保存在 PropertiesService 中的电子表格 ID 检查现有电子表格。因此,首先,当您运行脚本时,会创建新的电子表格并保存电子表格 ID。第 2 次运行后,将数据放入现有电子表格中,而无需创建新电子表格。
  • 如果您想将数据附加到现有电子表格的最后一行,请告诉我。

  • 引用:
  • Properties Service

  • 如果我误解了您的问题并且这不是您想要的方向,我深表歉意。

    关于google-apps-script - Adsense 报告 Google 表格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60553456/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com