如何同步返回“ google.scripts.run”?

时间:2019-09-29 14:12:29

标签: javascript node.js json google-api module.exports

这是我的index.js文件的一部分。

  var globalVar = 'value';

  console.log("start");

  function callAppsScript(auth) {
    var scriptId = '************************************';

    const script = google.script({version: 'v1', auth});
    script.scripts.run({
      resource: {
        function: 'getSheetdata',
      },
      scriptId: scriptId
    }, (err, res) => {
      if (err) return console.log(`The API create method returned an error: ${err}`);

      var json = JSON.stringify(res);
      json = JSON.parse(json);
      globalVar = json.data.response.result;

      console.log("1 " + globalVar);
    });
  }

  console.log("2 " + globalVar);

index.js来自developers.google.com github上的示例脚本。

https://github.com/gsuitedevs/node-samples/blob/b22182e84abfafaf0ca862c581e6f757a442b52d/apps-script/quickstart/index.js

当我执行“ node index.js”时,结果是

start
2 value
1 {"Sheet1":[{"key":"env","value":"prd"}],"Sheet2":[{"key":"env","value":"stg"}]}

我在这一行添加了“ withSuccessHandler”。

    script.scripts.run.withSuccessHandler({

但这没用。

start
2 value
TypeError: script.scripts.run.withSuccessHandler is not a function

如何编码以同步方式返回json?


我可以异步解决此问题。

这是我的代码。

const scriptId = '************************************';

async function callAppsScript() {
    try {
        const auth = await authorize();
        const script = google.script({ version: 'v1', auth: auth });
        const rs = await script.scripts.run({
            auth: auth,
            resource: {
                function: 'getSheetdata',
                },
                scriptId: scriptId
            })
            var json = JSON.stringify(rs);
            json = JSON.parse(json);
            var globalVar = json.data.response.result;
            return globalVar;

    } catch (error) {
        console.log(error);
    }
}

0 个答案:

没有答案