【问题标题】:Google spreadsheet get parameters from URLGoogle 电子表格从 URL 获取参数
【发布时间】:2017-12-01 19:14:34
【问题描述】:

我有一个应用程序,它通过 OAuth 1.0 将一项服务与 Google 表格相关联。

我点击插件菜单中的“登录”,发送签名和回调域(当前工作表)。然后在服务中,我点击按钮,获取请求令牌,它会将我返回到带有参数的指定域。

function onOpen(e)
{
    Logger.log( SpreadsheetApp.getActiveSpreadsheet().getUrl() );
    Logger.log( e.source.getUrl() );
}

.getUrl() 不包含它们。

根据>this<,我不能在表格中使用doGet(e),并且由于OAuth,我不能使用Web App,因为我仍然需要将这些参数传递给表格。

我尝试通过window.top.location.href 在客户端获取它,但出现跨域错误。

问题:我能拿到吗?还是不可能?

【问题讨论】:

  • 请参阅 Sergei Insas 的 answer 对提到的问题。
  • @Rubén,我已经在上面提到过这个问题。这并不能通过 Web App 解决问题,因为(如果我有 Web App)提供 ​​OAuth 的服务会打开它,而 Web App 不知道 Sheets 并且不能在那里写
  • 答案是使用有界脚本是不可能的,正如参考答案中所解释的那样。另一方面,我不清楚“Web App 不了解表格”是什么意思。 GAS Web App 可以使用电子表格服务 (SpreadsheetApp) 将值写入/读取电子表格。
  • @Rubén,我想我明白你的意思了。我去试试。谢谢

标签: javascript google-apps-script oauth google-sheets


【解决方案1】:

所以,我的问题的部分答案:

我们需要 2 个不同的脚本。第一个作为 Sheets Web 插件,第二个作为 Web App。接下来,我们需要实现屏幕截图中显示的所有步骤: 1) 在步骤 0、1、2 之后,服务提供者应该使用以下代码将我们重定向到 Helper 脚本 (Web App):

function doGet(e)
{
    var token    = e.parameter.oauth_token,
        code     = e.parameter.oauth_verifier,
        response;

        if(token && code && Root.setVerificationCode(token, code))
            response = "Success";
        else
            response = 'Error';

    return HtmlService.createHtmlOutput(response);
}

这里我们检索 GET 参数并将它们发送到表格网络插件 (Root)。 单击Resources -&gt; Libraries 并将您的插件添加为库。 Root 只是一个标识符。

2) 表格插件代码:

function setVerificationCode(token, code)
{
    var oauth = new OAuth();
    if(oauth.getAccessToken(code))
    {
        // change menu here
        return true;
    }
    else
        return false;
}

这些是实施 OAuth 1.0 所需的完整步骤。

附:现在我在更改菜单时遇到了问题,但这将是我的下一个问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-08
    • 1970-01-01
    • 2017-02-13
    • 2016-06-10
    • 1970-01-01
    • 2016-09-06
    相关资源
    最近更新 更多